diff --git a/drivers/adc/adc-uclass.c b/drivers/adc/adc-uclass.c
index 99b83ca..8781f32 100644
--- a/drivers/adc/adc-uclass.c
+++ b/drivers/adc/adc-uclass.c
@@ -267,7 +267,7 @@
 	return _adc_channels_single_shot(dev, channel_mask, channels);
 }
 
-static int adc_vdd_platdata_update(struct udevice *dev)
+static int adc_vdd_plat_update(struct udevice *dev)
 {
 	struct adc_uclass_plat *uc_pdata = dev_get_uclass_plat(dev);
 	int ret;
@@ -290,7 +290,7 @@
 	return 0;
 }
 
-static int adc_vss_platdata_update(struct udevice *dev)
+static int adc_vss_plat_update(struct udevice *dev)
 {
 	struct adc_uclass_plat *uc_pdata = dev_get_uclass_plat(dev);
 	int ret;
@@ -313,7 +313,7 @@
 	int ret, value_sign = uc_pdata->vdd_polarity_negative ? -1 : 1;
 
 	/* Update the regulator Value. */
-	ret = adc_vdd_platdata_update(dev);
+	ret = adc_vdd_plat_update(dev);
 	if (ret)
 		return ret;
 
@@ -331,7 +331,7 @@
 	int ret, value_sign = uc_pdata->vss_polarity_negative ? -1 : 1;
 
 	/* Update the regulator Value. */
-	ret = adc_vss_platdata_update(dev);
+	ret = adc_vss_plat_update(dev);
 	if (ret)
 		return ret;
 
@@ -367,7 +367,7 @@
 	return 0;
 }
 
-static int adc_vdd_platdata_set(struct udevice *dev)
+static int adc_vdd_plat_set(struct udevice *dev)
 {
 	struct adc_uclass_plat *uc_pdata = dev_get_uclass_plat(dev);
 	int ret;
@@ -380,7 +380,7 @@
 	ret = device_get_supply_regulator(dev, "vdd-supply",
 					  &uc_pdata->vdd_supply);
 	if (!ret)
-		return adc_vdd_platdata_update(dev);
+		return adc_vdd_plat_update(dev);
 
 	if (ret != -ENOENT)
 		return ret;
@@ -392,7 +392,7 @@
 	return 0;
 }
 
-static int adc_vss_platdata_set(struct udevice *dev)
+static int adc_vss_plat_set(struct udevice *dev)
 {
 	struct adc_uclass_plat *uc_pdata = dev_get_uclass_plat(dev);
 	int ret;
@@ -404,7 +404,7 @@
 	ret = device_get_supply_regulator(dev, "vss-supply",
 					  &uc_pdata->vss_supply);
 	if (!ret)
-		return adc_vss_platdata_update(dev);
+		return adc_vss_plat_update(dev);
 
 	if (ret != -ENOENT)
 		return ret;
@@ -421,12 +421,12 @@
 	int ret;
 
 	/* Set ADC VDD plat: polarity, uV, regulator (phandle). */
-	ret = adc_vdd_platdata_set(dev);
+	ret = adc_vdd_plat_set(dev);
 	if (ret)
 		pr_err("%s: Can't update Vdd. Error: %d", dev->name, ret);
 
 	/* Set ADC VSS plat: polarity, uV, regulator (phandle). */
-	ret = adc_vss_platdata_set(dev);
+	ret = adc_vss_plat_set(dev);
 	if (ret)
 		pr_err("%s: Can't update Vss. Error: %d", dev->name, ret);
 
diff --git a/drivers/ata/ahci.c b/drivers/ata/ahci.c
index bd8a3bc..2ef21ec 100644
--- a/drivers/ata/ahci.c
+++ b/drivers/ata/ahci.c
@@ -172,7 +172,7 @@
 #if !defined(CONFIG_SCSI_AHCI_PLAT) && !defined(CONFIG_DM_SCSI)
 # ifdef CONFIG_DM_PCI
 	struct udevice *dev = uc_priv->dev;
-	struct pci_child_platdata *pplat = dev_get_parent_plat(dev);
+	struct pci_child_plat *pplat = dev_get_parent_plat(dev);
 # else
 	pci_dev_t pdev = uc_priv->dev;
 	unsigned short vendor;
@@ -474,7 +474,7 @@
 		pci_write_config_byte(dev, 0x41, 0xa1);
 #endif
 #else
-	struct scsi_platdata *plat = dev_get_uclass_plat(dev);
+	struct scsi_plat *plat = dev_get_uclass_plat(dev);
 	uc_priv->mmio_base = (void *)plat->base;
 #endif
 
@@ -1163,7 +1163,7 @@
 int ahci_probe_scsi(struct udevice *ahci_dev, ulong base)
 {
 	struct ahci_uc_priv *uc_priv;
-	struct scsi_platdata *uc_plat;
+	struct scsi_plat *uc_plat;
 	struct udevice *dev;
 	int ret;
 
diff --git a/drivers/clk/altera/clk-agilex.c b/drivers/clk/altera/clk-agilex.c
index e0f43a2..bac1d98 100644
--- a/drivers/clk/altera/clk-agilex.c
+++ b/drivers/clk/altera/clk-agilex.c
@@ -17,7 +17,7 @@
 
 DECLARE_GLOBAL_DATA_PTR;
 
-struct socfpga_clk_platdata {
+struct socfpga_clk_plat {
 	void __iomem *regs;
 };
 
@@ -25,20 +25,20 @@
  * function to write the bypass register which requires a poll of the
  * busy bit
  */
-static void clk_write_bypass_mainpll(struct socfpga_clk_platdata *plat, u32 val)
+static void clk_write_bypass_mainpll(struct socfpga_clk_plat *plat, u32 val)
 {
 	CM_REG_WRITEL(plat, val, CLKMGR_MAINPLL_BYPASS);
 	cm_wait_for_fsm();
 }
 
-static void clk_write_bypass_perpll(struct socfpga_clk_platdata *plat, u32 val)
+static void clk_write_bypass_perpll(struct socfpga_clk_plat *plat, u32 val)
 {
 	CM_REG_WRITEL(plat, val, CLKMGR_PERPLL_BYPASS);
 	cm_wait_for_fsm();
 }
 
 /* function to write the ctrl register which requires a poll of the busy bit */
-static void clk_write_ctrl(struct socfpga_clk_platdata *plat, u32 val)
+static void clk_write_ctrl(struct socfpga_clk_plat *plat, u32 val)
 {
 	CM_REG_WRITEL(plat, val, CLKMGR_CTRL);
 	cm_wait_for_fsm();
@@ -108,7 +108,7 @@
 	},
 };
 
-static int membus_wait_for_req(struct socfpga_clk_platdata *plat, u32 pll,
+static int membus_wait_for_req(struct socfpga_clk_plat *plat, u32 pll,
 			       int timeout)
 {
 	int cnt = 0;
@@ -133,7 +133,7 @@
 	return 0;
 }
 
-static int membus_write_pll(struct socfpga_clk_platdata *plat, u32 pll,
+static int membus_write_pll(struct socfpga_clk_plat *plat, u32 pll,
 			    u32 addr_offset, u32 wdat, int timeout)
 {
 	u32 addr;
@@ -154,7 +154,7 @@
 	return membus_wait_for_req(plat, pll, timeout);
 }
 
-static int membus_read_pll(struct socfpga_clk_platdata *plat, u32 pll,
+static int membus_read_pll(struct socfpga_clk_plat *plat, u32 pll,
 			   u32 addr_offset, u32 *rdata, int timeout)
 {
 	u32 addr;
@@ -184,7 +184,7 @@
 	return 0;
 }
 
-static void membus_pll_configs(struct socfpga_clk_platdata *plat, u32 pll)
+static void membus_pll_configs(struct socfpga_clk_plat *plat, u32 pll)
 {
 	int i;
 	u32 rdata;
@@ -236,7 +236,7 @@
 static void clk_basic_init(struct udevice *dev,
 			   const struct cm_config * const cfg)
 {
-	struct socfpga_clk_platdata *plat = dev_get_plat(dev);
+	struct socfpga_clk_plat *plat = dev_get_plat(dev);
 	u32 vcocalib;
 
 	if (!cfg)
@@ -342,7 +342,7 @@
 		       CM_REG_READL(plat, CLKMGR_CTRL) & ~CLKMGR_CTRL_BOOTMODE);
 }
 
-static u64 clk_get_vco_clk_hz(struct socfpga_clk_platdata *plat,
+static u64 clk_get_vco_clk_hz(struct socfpga_clk_plat *plat,
 			      u32 pllglob_reg, u32 pllm_reg)
 {
 	 u64 fref, arefdiv, mdiv, reg, vco;
@@ -375,26 +375,26 @@
 	return vco;
 }
 
-static u64 clk_get_main_vco_clk_hz(struct socfpga_clk_platdata *plat)
+static u64 clk_get_main_vco_clk_hz(struct socfpga_clk_plat *plat)
 {
 	return clk_get_vco_clk_hz(plat, CLKMGR_MAINPLL_PLLGLOB,
 				 CLKMGR_MAINPLL_PLLM);
 }
 
-static u64 clk_get_per_vco_clk_hz(struct socfpga_clk_platdata *plat)
+static u64 clk_get_per_vco_clk_hz(struct socfpga_clk_plat *plat)
 {
 	return clk_get_vco_clk_hz(plat, CLKMGR_PERPLL_PLLGLOB,
 				 CLKMGR_PERPLL_PLLM);
 }
 
-static u32 clk_get_5_1_clk_src(struct socfpga_clk_platdata *plat, u64 reg)
+static u32 clk_get_5_1_clk_src(struct socfpga_clk_plat *plat, u64 reg)
 {
 	u32 clksrc = CM_REG_READL(plat, reg);
 
 	return (clksrc & CLKMGR_CLKSRC_MASK) >> CLKMGR_CLKSRC_OFFSET;
 }
 
-static u64 clk_get_clksrc_hz(struct socfpga_clk_platdata *plat, u32 clksrc_reg,
+static u64 clk_get_clksrc_hz(struct socfpga_clk_plat *plat, u32 clksrc_reg,
 			     u32 main_reg, u32 per_reg)
 {
 	u64 clock;
@@ -431,7 +431,7 @@
 	return clock;
 }
 
-static u64 clk_get_mpu_clk_hz(struct socfpga_clk_platdata *plat)
+static u64 clk_get_mpu_clk_hz(struct socfpga_clk_plat *plat)
 {
 	u64 clock = clk_get_clksrc_hz(plat, CLKMGR_MAINPLL_MPUCLK,
 				      CLKMGR_MAINPLL_PLLC0,
@@ -443,14 +443,14 @@
 	return clock;
 }
 
-static u32 clk_get_l3_main_clk_hz(struct socfpga_clk_platdata *plat)
+static u32 clk_get_l3_main_clk_hz(struct socfpga_clk_plat *plat)
 {
 	return clk_get_clksrc_hz(plat, CLKMGR_MAINPLL_NOCCLK,
 				      CLKMGR_MAINPLL_PLLC1,
 				      CLKMGR_PERPLL_PLLC1);
 }
 
-static u32 clk_get_l4_main_clk_hz(struct socfpga_clk_platdata *plat)
+static u32 clk_get_l4_main_clk_hz(struct socfpga_clk_plat *plat)
 {
 	u64 clock = clk_get_l3_main_clk_hz(plat);
 
@@ -461,7 +461,7 @@
 	return clock;
 }
 
-static u32 clk_get_sdmmc_clk_hz(struct socfpga_clk_platdata *plat)
+static u32 clk_get_sdmmc_clk_hz(struct socfpga_clk_plat *plat)
 {
 	u64 clock = clk_get_clksrc_hz(plat, CLKMGR_ALTR_SDMMCCTR,
 				      CLKMGR_MAINPLL_PLLC3,
@@ -473,7 +473,7 @@
 	return clock / 4;
 }
 
-static u32 clk_get_l4_sp_clk_hz(struct socfpga_clk_platdata *plat)
+static u32 clk_get_l4_sp_clk_hz(struct socfpga_clk_plat *plat)
 {
 	u64 clock = clk_get_l3_main_clk_hz(plat);
 
@@ -484,7 +484,7 @@
 	return clock;
 }
 
-static u32 clk_get_l4_mp_clk_hz(struct socfpga_clk_platdata *plat)
+static u32 clk_get_l4_mp_clk_hz(struct socfpga_clk_plat *plat)
 {
 	u64 clock = clk_get_l3_main_clk_hz(plat);
 
@@ -495,7 +495,7 @@
 	return clock;
 }
 
-static u32 clk_get_l4_sys_free_clk_hz(struct socfpga_clk_platdata *plat)
+static u32 clk_get_l4_sys_free_clk_hz(struct socfpga_clk_plat *plat)
 {
 	if (CM_REG_READL(plat, CLKMGR_STAT) & CLKMGR_STAT_BOOTMODE)
 		return clk_get_l3_main_clk_hz(plat) / 2;
@@ -503,7 +503,7 @@
 	return clk_get_l3_main_clk_hz(plat) / 4;
 }
 
-static u32 clk_get_emac_clk_hz(struct socfpga_clk_platdata *plat, u32 emac_id)
+static u32 clk_get_emac_clk_hz(struct socfpga_clk_plat *plat, u32 emac_id)
 {
 	bool emacsel_a;
 	u32 ctl;
@@ -585,7 +585,7 @@
 
 static ulong socfpga_clk_get_rate(struct clk *clk)
 {
-	struct socfpga_clk_platdata *plat = dev_get_plat(clk->dev);
+	struct socfpga_clk_plat *plat = dev_get_plat(clk->dev);
 
 	switch (clk->id) {
 	case AGILEX_MPU_CLK:
@@ -630,7 +630,7 @@
 
 static int socfpga_clk_of_to_plat(struct udevice *dev)
 {
-	struct socfpga_clk_platdata *plat = dev_get_plat(dev);
+	struct socfpga_clk_plat *plat = dev_get_plat(dev);
 	fdt_addr_t addr;
 
 	addr = dev_read_addr(dev);
@@ -658,5 +658,5 @@
 	.ops		= &socfpga_clk_ops,
 	.probe		= socfpga_clk_probe,
 	.of_to_plat = socfpga_clk_of_to_plat,
-	.plat_auto	= sizeof(struct socfpga_clk_platdata),
+	.plat_auto	= sizeof(struct socfpga_clk_plat),
 };
diff --git a/drivers/clk/altera/clk-arria10.c b/drivers/clk/altera/clk-arria10.c
index e1e4876..1812152 100644
--- a/drivers/clk/altera/clk-arria10.c
+++ b/drivers/clk/altera/clk-arria10.c
@@ -24,7 +24,7 @@
 	SOCFPGA_A10_CLK_UNKNOWN_CLK,
 };
 
-struct socfpga_a10_clk_platdata {
+struct socfpga_a10_clk_plat {
 	enum socfpga_a10_clk_type type;
 	struct clk_bulk	clks;
 	u32		regs;
@@ -43,7 +43,7 @@
 
 static int socfpga_a10_clk_get_upstream(struct clk *clk, struct clk **upclk)
 {
-	struct socfpga_a10_clk_platdata *plat = dev_get_plat(clk->dev);
+	struct socfpga_a10_clk_plat *plat = dev_get_plat(clk->dev);
 	u32 reg, maxval;
 
 	if (plat->clks.count == 0)
@@ -84,7 +84,7 @@
 
 static int socfpga_a10_clk_endisable(struct clk *clk, bool enable)
 {
-	struct socfpga_a10_clk_platdata *plat = dev_get_plat(clk->dev);
+	struct socfpga_a10_clk_plat *plat = dev_get_plat(clk->dev);
 	struct clk *upclk = NULL;
 	int ret;
 
@@ -120,7 +120,7 @@
 
 static ulong socfpga_a10_clk_get_rate(struct clk *clk)
 {
-	struct socfpga_a10_clk_platdata *plat = dev_get_plat(clk->dev);
+	struct socfpga_a10_clk_plat *plat = dev_get_plat(clk->dev);
 	struct clk *upclk = NULL;
 	ulong rate = 0, reg, numer, denom;
 	int ret;
@@ -190,7 +190,7 @@
  */
 static void socfpga_a10_handoff_workaround(struct udevice *dev)
 {
-	struct socfpga_a10_clk_platdata *plat = dev_get_plat(dev);
+	struct socfpga_a10_clk_plat *plat = dev_get_plat(dev);
 	const void *fdt = gd->fdt_blob;
 	struct clk_bulk	*bulk = &plat->clks;
 	int i, ret, offset = dev_of_offset(dev);
@@ -274,8 +274,8 @@
 
 static int socfpga_a10_clk_probe(struct udevice *dev)
 {
-	struct socfpga_a10_clk_platdata *plat = dev_get_plat(dev);
-	struct socfpga_a10_clk_platdata *pplat;
+	struct socfpga_a10_clk_plat *plat = dev_get_plat(dev);
+	struct socfpga_a10_clk_plat *pplat;
 	struct udevice *pdev;
 	const void *fdt = gd->fdt_blob;
 	int offset = dev_of_offset(dev);
@@ -321,7 +321,7 @@
 
 static int socfpga_a10_of_to_plat(struct udevice *dev)
 {
-	struct socfpga_a10_clk_platdata *plat = dev_get_plat(dev);
+	struct socfpga_a10_clk_plat *plat = dev_get_plat(dev);
 	unsigned int divreg[3], gatereg[2];
 	int ret;
 
@@ -359,5 +359,5 @@
 	.probe		= socfpga_a10_clk_probe,
 	.of_to_plat = socfpga_a10_of_to_plat,
 
-	.plat_auto	= sizeof(struct socfpga_a10_clk_platdata),
+	.plat_auto	= sizeof(struct socfpga_a10_clk_plat),
 };
diff --git a/drivers/clk/at91/compat.c b/drivers/clk/at91/compat.c
index 89283e6..e514f26 100644
--- a/drivers/clk/at91/compat.c
+++ b/drivers/clk/at91/compat.c
@@ -21,7 +21,7 @@
 
 DECLARE_GLOBAL_DATA_PTR;
 
-struct pmc_platdata {
+struct pmc_plat {
 	struct at91_pmc *reg_base;
 	struct regmap *regmap_sfr;
 };
@@ -45,7 +45,7 @@
 
 static int at91_pmc_core_probe(struct udevice *dev)
 {
-	struct pmc_platdata *plat = dev_get_plat(dev);
+	struct pmc_plat *plat = dev_get_plat(dev);
 
 	dev = dev_get_parent(dev);
 
@@ -115,7 +115,7 @@
 int at91_clk_probe(struct udevice *dev)
 {
 	struct udevice *dev_periph_container, *dev_pmc;
-	struct pmc_platdata *plat = dev_get_plat(dev);
+	struct pmc_plat *plat = dev_get_plat(dev);
 
 	dev_periph_container = dev_get_parent(dev);
 	dev_pmc = dev_get_parent(dev_periph_container);
@@ -191,7 +191,7 @@
 /* Main osc clock specific code. */
 static int main_osc_clk_enable(struct clk *clk)
 {
-	struct pmc_platdata *plat = dev_get_plat(clk->dev);
+	struct pmc_plat *plat = dev_get_plat(clk->dev);
 	struct at91_pmc *pmc = plat->reg_base;
 
 	if (readl(&pmc->sr) & AT91_PMC_MOSCSELS)
@@ -225,14 +225,14 @@
 	.id = UCLASS_CLK,
 	.of_match = main_osc_clk_match,
 	.probe = main_osc_clk_probe,
-	.plat_auto	= sizeof(struct pmc_platdata),
+	.plat_auto	= sizeof(struct pmc_plat),
 	.ops = &main_osc_clk_ops,
 };
 
 /* PLLA clock specific code. */
 static int plla_clk_enable(struct clk *clk)
 {
-	struct pmc_platdata *plat = dev_get_plat(clk->dev);
+	struct pmc_plat *plat = dev_get_plat(clk->dev);
 	struct at91_pmc *pmc = plat->reg_base;
 
 	if (readl(&pmc->sr) & AT91_PMC_LOCKA)
@@ -266,7 +266,7 @@
 	.id = UCLASS_CLK,
 	.of_match = plla_clk_match,
 	.probe = plla_clk_probe,
-	.plat_auto	= sizeof(struct pmc_platdata),
+	.plat_auto	= sizeof(struct pmc_plat),
 	.ops = &plla_clk_ops,
 };
 
@@ -278,7 +278,7 @@
 
 static ulong at91_plladiv_clk_get_rate(struct clk *clk)
 {
-	struct pmc_platdata *plat = dev_get_plat(clk->dev);
+	struct pmc_plat *plat = dev_get_plat(clk->dev);
 	struct at91_pmc *pmc = plat->reg_base;
 	struct clk source;
 	ulong clk_rate;
@@ -297,7 +297,7 @@
 
 static ulong at91_plladiv_clk_set_rate(struct clk *clk, ulong rate)
 {
-	struct pmc_platdata *plat = dev_get_plat(clk->dev);
+	struct pmc_plat *plat = dev_get_plat(clk->dev);
 	struct at91_pmc *pmc = plat->reg_base;
 	struct clk source;
 	ulong parent_rate;
@@ -340,7 +340,7 @@
 	.id = UCLASS_CLK,
 	.of_match = at91_plladiv_clk_match,
 	.probe = at91_plladiv_clk_probe,
-	.plat_auto	= sizeof(struct pmc_platdata),
+	.plat_auto	= sizeof(struct pmc_plat),
 	.ops = &at91_plladiv_clk_ops,
 };
 
@@ -401,7 +401,7 @@
 
 static int system_clk_enable(struct clk *clk)
 {
-	struct pmc_platdata *plat = dev_get_plat(clk->dev);
+	struct pmc_plat *plat = dev_get_plat(clk->dev);
 	struct at91_pmc *pmc = plat->reg_base;
 	u32 mask;
 
@@ -437,7 +437,7 @@
 	.name = "system-clk",
 	.id = UCLASS_CLK,
 	.probe = at91_clk_probe,
-	.plat_auto	= sizeof(struct pmc_platdata),
+	.plat_auto	= sizeof(struct pmc_plat),
 	.ops = &system_clk_ops,
 };
 
@@ -483,7 +483,7 @@
 
 static int periph_clk_enable(struct clk *clk)
 {
-	struct pmc_platdata *plat = dev_get_plat(clk->dev);
+	struct pmc_plat *plat = dev_get_plat(clk->dev);
 	struct at91_pmc *pmc = plat->reg_base;
 	enum periph_clk_type clk_type;
 	void *addr;
@@ -536,7 +536,7 @@
 U_BOOT_DRIVER(clk_periph) = {
 	.name	= "periph-clk",
 	.id	= UCLASS_CLK,
-	.plat_auto	= sizeof(struct pmc_platdata),
+	.plat_auto	= sizeof(struct pmc_plat),
 	.probe = at91_clk_probe,
 	.ops	= &periph_clk_ops,
 };
@@ -552,7 +552,7 @@
 
 static int utmi_clk_enable(struct clk *clk)
 {
-	struct pmc_platdata *plat = dev_get_plat(clk->dev);
+	struct pmc_plat *plat = dev_get_plat(clk->dev);
 	struct at91_pmc *pmc = plat->reg_base;
 	struct clk clk_dev;
 	ulong clk_rate;
@@ -640,7 +640,7 @@
 
 static int utmi_clk_of_to_plat(struct udevice *dev)
 {
-	struct pmc_platdata *plat = dev_get_plat(dev);
+	struct pmc_plat *plat = dev_get_plat(dev);
 	struct udevice *syscon;
 
 	uclass_get_device_by_phandle(UCLASS_SYSCON, dev,
@@ -668,7 +668,7 @@
 	.of_match = utmi_clk_match,
 	.probe = utmi_clk_probe,
 	.of_to_plat = utmi_clk_of_to_plat,
-	.plat_auto	= sizeof(struct pmc_platdata),
+	.plat_auto	= sizeof(struct pmc_plat),
 	.ops = &utmi_clk_ops,
 };
 
@@ -681,7 +681,7 @@
 
 static ulong sama5d4_h32mx_clk_get_rate(struct clk *clk)
 {
-	struct pmc_platdata *plat = dev_get_plat(clk->dev);
+	struct pmc_plat *plat = dev_get_plat(clk->dev);
 	struct at91_pmc *pmc = plat->reg_base;
 	ulong rate = gd->arch.mck_rate_hz;
 
@@ -713,7 +713,7 @@
 	.id = UCLASS_CLK,
 	.of_match = sama5d4_h32mx_clk_match,
 	.probe = sama5d4_h32mx_clk_probe,
-	.plat_auto	= sizeof(struct pmc_platdata),
+	.plat_auto	= sizeof(struct pmc_plat),
 	.ops = &sama5d4_h32mx_clk_ops,
 };
 
@@ -754,7 +754,7 @@
 
 static ulong generic_clk_get_rate(struct clk *clk)
 {
-	struct pmc_platdata *plat = dev_get_plat(clk->dev);
+	struct pmc_plat *plat = dev_get_plat(clk->dev);
 	struct at91_pmc *pmc = plat->reg_base;
 	struct clk parent;
 	ulong clk_rate;
@@ -782,7 +782,7 @@
 
 static ulong generic_clk_set_rate(struct clk *clk, ulong rate)
 {
-	struct pmc_platdata *plat = dev_get_plat(clk->dev);
+	struct pmc_plat *plat = dev_get_plat(clk->dev);
 	struct at91_pmc *pmc = plat->reg_base;
 	struct generic_clk_priv *priv = dev_get_priv(clk->dev);
 	struct clk parent, best_parent;
@@ -877,7 +877,7 @@
 	.probe = at91_clk_probe,
 	.of_to_plat = generic_clk_of_to_plat,
 	.priv_auto	= sizeof(struct generic_clk_priv),
-	.plat_auto	= sizeof(struct pmc_platdata),
+	.plat_auto	= sizeof(struct pmc_plat),
 	.ops = &generic_clk_ops,
 };
 
@@ -895,7 +895,7 @@
 
 static ulong at91_usb_clk_get_rate(struct clk *clk)
 {
-	struct pmc_platdata *plat = dev_get_plat(clk->dev);
+	struct pmc_plat *plat = dev_get_plat(clk->dev);
 	struct at91_pmc *pmc = plat->reg_base;
 	struct clk source;
 	u32 tmp, usbdiv;
@@ -916,7 +916,7 @@
 
 static ulong at91_usb_clk_set_rate(struct clk *clk, ulong rate)
 {
-	struct pmc_platdata *plat = dev_get_plat(clk->dev);
+	struct pmc_plat *plat = dev_get_plat(clk->dev);
 	struct at91_pmc *pmc = plat->reg_base;
 	struct at91_usb_clk_priv *priv = dev_get_priv(clk->dev);
 	struct clk source, best_source;
@@ -1013,7 +1013,7 @@
 	.probe = at91_usb_clk_probe,
 	.of_to_plat = at91_usb_clk_of_to_plat,
 	.priv_auto	= sizeof(struct at91_usb_clk_priv),
-	.plat_auto	= sizeof(struct pmc_platdata),
+	.plat_auto	= sizeof(struct pmc_plat),
 	.ops = &at91_usb_clk_ops,
 };
 
diff --git a/drivers/core/regmap.c b/drivers/core/regmap.c
index c2bed88..4baacab 100644
--- a/drivers/core/regmap.c
+++ b/drivers/core/regmap.c
@@ -60,8 +60,8 @@
 }
 
 #if CONFIG_IS_ENABLED(OF_PLATDATA)
-int regmap_init_mem_platdata(struct udevice *dev, fdt_val_t *reg, int count,
-			     struct regmap **mapp)
+int regmap_init_mem_plat(struct udevice *dev, fdt_val_t *reg, int count,
+			 struct regmap **mapp)
 {
 	struct regmap_range *range;
 	struct regmap *map;
diff --git a/drivers/core/root.c b/drivers/core/root.c
index 42f8f0c..672aa7c 100644
--- a/drivers/core/root.c
+++ b/drivers/core/root.c
@@ -174,7 +174,7 @@
 }
 #endif
 
-int dm_scan_platdata(bool pre_reloc_only)
+int dm_scan_plat(bool pre_reloc_only)
 {
 	int ret;
 
@@ -308,9 +308,9 @@
 		debug("dm_init() failed: %d\n", ret);
 		return ret;
 	}
-	ret = dm_scan_platdata(pre_reloc_only);
+	ret = dm_scan_plat(pre_reloc_only);
 	if (ret) {
-		debug("dm_scan_platdata() failed: %d\n", ret);
+		debug("dm_scan_plat() failed: %d\n", ret);
 		return ret;
 	}
 
diff --git a/drivers/core/syscon-uclass.c b/drivers/core/syscon-uclass.c
index 5de4622..cb33fac 100644
--- a/drivers/core/syscon-uclass.c
+++ b/drivers/core/syscon-uclass.c
@@ -56,9 +56,9 @@
 	 * using OF_PLATDATA will need to ensure that this is true.
 	 */
 #if CONFIG_IS_ENABLED(OF_PLATDATA)
-	struct syscon_base_platdata *plat = dev_get_plat(dev);
+	struct syscon_base_plat *plat = dev_get_plat(dev);
 
-	return regmap_init_mem_platdata(dev, plat->reg, ARRAY_SIZE(plat->reg),
+	return regmap_init_mem_plat(dev, plat->reg, ARRAY_SIZE(plat->reg),
 					&priv->regmap);
 #else
 	return regmap_init_mem(dev_ofnode(dev), &priv->regmap);
diff --git a/drivers/cpu/at91_cpu.c b/drivers/cpu/at91_cpu.c
index bd81efd..9ef1b31 100644
--- a/drivers/cpu/at91_cpu.c
+++ b/drivers/cpu/at91_cpu.c
@@ -11,7 +11,7 @@
 #include <div64.h>
 #include <linux/clk-provider.h>
 
-struct at91_cpu_platdata {
+struct at91_cpu_plat {
 	const char *name;
 	ulong cpufreq_mhz;
 	ulong mckfreq_mhz;
@@ -27,7 +27,7 @@
 
 int at91_cpu_get_desc(const struct udevice *dev, char *buf, int size)
 {
-	struct at91_cpu_platdata *plat = dev_get_plat(dev);
+	struct at91_cpu_plat *plat = dev_get_plat(dev);
 
 	snprintf(buf, size, "%s\n"
 		 "Crystal frequency: %8lu MHz\n"
@@ -41,7 +41,7 @@
 
 static int at91_cpu_get_info(const struct udevice *dev, struct cpu_info *info)
 {
-	struct at91_cpu_platdata *plat = dev_get_plat(dev);
+	struct at91_cpu_plat *plat = dev_get_plat(dev);
 
 	info->cpu_freq = plat->cpufreq_mhz * 1000000;
 	info->features = BIT(CPU_FEAT_L1_CACHE);
@@ -75,7 +75,7 @@
 
 static int at91_cpu_probe(struct udevice *dev)
 {
-	struct at91_cpu_platdata *plat = dev_get_plat(dev);
+	struct at91_cpu_plat *plat = dev_get_plat(dev);
 	struct clk clk;
 	ulong rate;
 	int ret;
@@ -118,6 +118,6 @@
 	.of_match	= at91_cpu_ids,
 	.ops		= &at91_cpu_ops,
 	.probe		= at91_cpu_probe,
-	.plat_auto	= sizeof(struct at91_cpu_platdata),
+	.plat_auto	= sizeof(struct at91_cpu_plat),
 	.flags		= DM_FLAG_PRE_RELOC,
 };
diff --git a/drivers/cpu/bmips_cpu.c b/drivers/cpu/bmips_cpu.c
index fc2084f..172bc99 100644
--- a/drivers/cpu/bmips_cpu.c
+++ b/drivers/cpu/bmips_cpu.c
@@ -425,7 +425,7 @@
 /* BMIPS CPU driver */
 int bmips_cpu_bind(struct udevice *dev)
 {
-	struct cpu_platdata *plat = dev_get_parent_plat(dev);
+	struct cpu_plat *plat = dev_get_parent_plat(dev);
 
 	plat->cpu_id = dev_read_u32_default(dev, "reg", -1);
 	plat->device_id = read_c0_prid();
diff --git a/drivers/cpu/cpu-uclass.c b/drivers/cpu/cpu-uclass.c
index 55cb172..1c338ba 100644
--- a/drivers/cpu/cpu-uclass.c
+++ b/drivers/cpu/cpu-uclass.c
@@ -115,7 +115,7 @@
 U_BOOT_DRIVER(cpu_bus) = {
 	.name	= "cpu_bus",
 	.id	= UCLASS_SIMPLE_BUS,
-	.per_child_plat_auto	= sizeof(struct cpu_platdata),
+	.per_child_plat_auto	= sizeof(struct cpu_plat),
 };
 
 static int uclass_cpu_init(struct uclass *uc)
diff --git a/drivers/cpu/cpu_sandbox.c b/drivers/cpu/cpu_sandbox.c
index df8a702..fe6772b 100644
--- a/drivers/cpu/cpu_sandbox.c
+++ b/drivers/cpu/cpu_sandbox.c
@@ -64,7 +64,7 @@
 static int cpu_sandbox_bind(struct udevice *dev)
 {
 	int ret;
-	struct cpu_platdata *plat = dev_get_parent_plat(dev);
+	struct cpu_plat *plat = dev_get_parent_plat(dev);
 
 	/* first examine the property in current cpu node */
 	ret = dev_read_u32(dev, "timebase-frequency", &plat->timebase_freq);
diff --git a/drivers/cpu/imx8_cpu.c b/drivers/cpu/imx8_cpu.c
index c9f7449..1d1e49e 100644
--- a/drivers/cpu/imx8_cpu.c
+++ b/drivers/cpu/imx8_cpu.c
@@ -16,7 +16,7 @@
 
 DECLARE_GLOBAL_DATA_PTR;
 
-struct cpu_imx_platdata {
+struct cpu_imx_plat {
 	const char *name;
 	const char *rev;
 	const char *type;
@@ -55,7 +55,7 @@
 
 static void set_core_data(struct udevice *dev)
 {
-	struct cpu_imx_platdata *plat = dev_get_plat(dev);
+	struct cpu_imx_plat *plat = dev_get_plat(dev);
 
 	if (device_is_compatible(dev, "arm,cortex-a35")) {
 		plat->cpu_rsrc = SC_R_A35;
@@ -73,7 +73,7 @@
 }
 
 #if IS_ENABLED(CONFIG_IMX_SCU_THERMAL)
-static int cpu_imx_get_temp(struct cpu_imx_platdata *plat)
+static int cpu_imx_get_temp(struct cpu_imx_plat *plat)
 {
 	struct udevice *thermal_dev;
 	int cpu_tmp, ret;
@@ -94,7 +94,7 @@
 	return cpu_tmp;
 }
 #else
-static int cpu_imx_get_temp(struct cpu_imx_platdata *plat)
+static int cpu_imx_get_temp(struct cpu_imx_plat *plat)
 {
 	return 0;
 }
@@ -102,7 +102,7 @@
 
 int cpu_imx_get_desc(const struct udevice *dev, char *buf, int size)
 {
-	struct cpu_imx_platdata *plat = dev_get_plat(dev);
+	struct cpu_imx_plat *plat = dev_get_plat(dev);
 	int ret, temp;
 
 	if (size < 100)
@@ -128,7 +128,7 @@
 
 static int cpu_imx_get_info(const struct udevice *dev, struct cpu_info *info)
 {
-	struct cpu_imx_platdata *plat = dev_get_plat(dev);
+	struct cpu_imx_plat *plat = dev_get_plat(dev);
 
 	info->cpu_freq = plat->freq_mhz * 1000;
 	info->features = BIT(CPU_FEAT_L1_CACHE) | BIT(CPU_FEAT_MMU);
@@ -165,7 +165,7 @@
 
 static int cpu_imx_is_current(struct udevice *dev)
 {
-	struct cpu_imx_platdata *plat = dev_get_plat(dev);
+	struct cpu_imx_plat *plat = dev_get_plat(dev);
 
 	if (plat->mpidr == (read_mpidr() & 0xffff))
 		return 1;
@@ -190,7 +190,7 @@
 
 static ulong imx8_get_cpu_rate(struct udevice *dev)
 {
-	struct cpu_imx_platdata *plat = dev_get_plat(dev);
+	struct cpu_imx_plat *plat = dev_get_plat(dev);
 	ulong rate;
 	int ret;
 
@@ -206,7 +206,7 @@
 
 static int imx8_cpu_probe(struct udevice *dev)
 {
-	struct cpu_imx_platdata *plat = dev_get_plat(dev);
+	struct cpu_imx_plat *plat = dev_get_plat(dev);
 	u32 cpurev;
 
 	set_core_data(dev);
@@ -230,6 +230,6 @@
 	.of_match	= cpu_imx8_ids,
 	.ops		= &cpu_imx8_ops,
 	.probe		= imx8_cpu_probe,
-	.plat_auto	= sizeof(struct cpu_imx_platdata),
+	.plat_auto	= sizeof(struct cpu_imx_plat),
 	.flags		= DM_FLAG_PRE_RELOC,
 };
diff --git a/drivers/cpu/riscv_cpu.c b/drivers/cpu/riscv_cpu.c
index 3899d4d..0b10c17 100644
--- a/drivers/cpu/riscv_cpu.c
+++ b/drivers/cpu/riscv_cpu.c
@@ -91,7 +91,7 @@
 
 static int riscv_cpu_bind(struct udevice *dev)
 {
-	struct cpu_platdata *plat = dev_get_parent_plat(dev);
+	struct cpu_plat *plat = dev_get_parent_plat(dev);
 	struct driver *drv;
 	int ret;
 
diff --git a/drivers/ddr/altera/sdram_agilex.c b/drivers/ddr/altera/sdram_agilex.c
index 497ff78..868bf14 100644
--- a/drivers/ddr/altera/sdram_agilex.c
+++ b/drivers/ddr/altera/sdram_agilex.c
@@ -25,7 +25,7 @@
 
 int sdram_mmr_init_full(struct udevice *dev)
 {
-	struct altera_sdram_platdata *plat = dev->plat;
+	struct altera_sdram_plat *plat = dev->plat;
 	struct altera_sdram_priv *priv = dev_get_priv(dev);
 	u32 i;
 	int ret;
diff --git a/drivers/ddr/altera/sdram_gen5.c b/drivers/ddr/altera/sdram_gen5.c
index 286961c..3ffe057 100644
--- a/drivers/ddr/altera/sdram_gen5.c
+++ b/drivers/ddr/altera/sdram_gen5.c
@@ -27,7 +27,7 @@
 	struct ram_info info;
 };
 
-struct altera_gen5_sdram_platdata {
+struct altera_gen5_sdram_plat {
 	struct socfpga_sdr *sdr;
 };
 
@@ -565,7 +565,7 @@
 
 static int altera_gen5_sdram_of_to_plat(struct udevice *dev)
 {
-	struct altera_gen5_sdram_platdata *plat = dev->plat;
+	struct altera_gen5_sdram_plat *plat = dev->plat;
 
 	plat->sdr = (struct socfpga_sdr *)devfdt_get_addr_index(dev, 0);
 	if (!plat->sdr)
@@ -578,7 +578,7 @@
 {
 	int ret;
 	unsigned long sdram_size;
-	struct altera_gen5_sdram_platdata *plat = dev->plat;
+	struct altera_gen5_sdram_plat *plat = dev->plat;
 	struct altera_gen5_sdram_priv *priv = dev_get_priv(dev);
 	struct socfpga_sdr_ctrl *sdr_ctrl = &plat->sdr->sdr_ctrl;
 	struct reset_ctl_bulk resets;
@@ -647,7 +647,7 @@
 	.of_match = altera_gen5_sdram_ids,
 	.ops = &altera_gen5_sdram_ops,
 	.of_to_plat = altera_gen5_sdram_of_to_plat,
-	.plat_auto	= sizeof(struct altera_gen5_sdram_platdata),
+	.plat_auto	= sizeof(struct altera_gen5_sdram_plat),
 	.probe = altera_gen5_sdram_probe,
 	.priv_auto	= sizeof(struct altera_gen5_sdram_priv),
 };
diff --git a/drivers/ddr/altera/sdram_s10.c b/drivers/ddr/altera/sdram_s10.c
index 8028d89..984dc32 100644
--- a/drivers/ddr/altera/sdram_s10.c
+++ b/drivers/ddr/altera/sdram_s10.c
@@ -70,7 +70,7 @@
  */
 int sdram_mmr_init_full(struct udevice *dev)
 {
-	struct altera_sdram_platdata *plat = dev->plat;
+	struct altera_sdram_plat *plat = dev->plat;
 	struct altera_sdram_priv *priv = dev_get_priv(dev);
 	u32 update_value, io48_value, ddrioctl;
 	u32 i;
diff --git a/drivers/ddr/altera/sdram_soc64.c b/drivers/ddr/altera/sdram_soc64.c
index 0bd40c2..7e77c7b 100644
--- a/drivers/ddr/altera/sdram_soc64.c
+++ b/drivers/ddr/altera/sdram_soc64.c
@@ -27,29 +27,29 @@
 
 #define PGTABLE_OFF	0x4000
 
-u32 hmc_readl(struct altera_sdram_platdata *plat, u32 reg)
+u32 hmc_readl(struct altera_sdram_plat *plat, u32 reg)
 {
 	return readl(plat->iomhc + reg);
 }
 
-u32 hmc_ecc_readl(struct altera_sdram_platdata *plat, u32 reg)
+u32 hmc_ecc_readl(struct altera_sdram_plat *plat, u32 reg)
 {
 	return readl(plat->hmc + reg);
 }
 
-u32 hmc_ecc_writel(struct altera_sdram_platdata *plat,
+u32 hmc_ecc_writel(struct altera_sdram_plat *plat,
 		   u32 data, u32 reg)
 {
 	return writel(data, plat->hmc + reg);
 }
 
-u32 ddr_sch_writel(struct altera_sdram_platdata *plat, u32 data,
+u32 ddr_sch_writel(struct altera_sdram_plat *plat, u32 data,
 		   u32 reg)
 {
 	return writel(data, plat->ddr_sch + reg);
 }
 
-int emif_clear(struct altera_sdram_platdata *plat)
+int emif_clear(struct altera_sdram_plat *plat)
 {
 	hmc_ecc_writel(plat, 0, RSTHANDSHAKECTRL);
 
@@ -59,7 +59,7 @@
 				 false, 1000, false);
 }
 
-int emif_reset(struct altera_sdram_platdata *plat)
+int emif_reset(struct altera_sdram_plat *plat)
 {
 	u32 c2s, s2c, ret;
 
@@ -214,7 +214,7 @@
  * Calculate SDRAM device size based on SDRAM controller parameters.
  * Size is specified in bytes.
  */
-phys_size_t sdram_calculate_size(struct altera_sdram_platdata *plat)
+phys_size_t sdram_calculate_size(struct altera_sdram_plat *plat)
 {
 	u32 dramaddrw = hmc_readl(plat, DRAMADDRW);
 
@@ -232,7 +232,7 @@
 
 static int altera_sdram_of_to_plat(struct udevice *dev)
 {
-	struct altera_sdram_platdata *plat = dev->plat;
+	struct altera_sdram_plat *plat = dev->plat;
 	fdt_addr_t addr;
 
 	addr = dev_read_addr_index(dev, 0);
@@ -304,7 +304,7 @@
 	.of_match = altera_sdram_ids,
 	.ops = &altera_sdram_ops,
 	.of_to_plat = altera_sdram_of_to_plat,
-	.plat_auto	= sizeof(struct altera_sdram_platdata),
+	.plat_auto	= sizeof(struct altera_sdram_plat),
 	.probe = altera_sdram_probe,
 	.priv_auto	= sizeof(struct altera_sdram_priv),
 };
diff --git a/drivers/ddr/altera/sdram_soc64.h b/drivers/ddr/altera/sdram_soc64.h
index 4a830e7..8af0afc 100644
--- a/drivers/ddr/altera/sdram_soc64.h
+++ b/drivers/ddr/altera/sdram_soc64.h
@@ -14,7 +14,7 @@
 	struct reset_ctl_bulk resets;
 };
 
-struct altera_sdram_platdata {
+struct altera_sdram_plat {
 	void __iomem *hmc;
 	void __iomem *ddr_sch;
 	void __iomem *iomhc;
@@ -169,19 +169,19 @@
 #define FW_HMC_ADAPTOR_REG_ADDR			0xf8020004
 #define FW_HMC_ADAPTOR_MPU_MASK			BIT(0)
 
-u32 hmc_readl(struct altera_sdram_platdata *plat, u32 reg);
-u32 hmc_ecc_readl(struct altera_sdram_platdata *plat, u32 reg);
-u32 hmc_ecc_writel(struct altera_sdram_platdata *plat,
+u32 hmc_readl(struct altera_sdram_plat *plat, u32 reg);
+u32 hmc_ecc_readl(struct altera_sdram_plat *plat, u32 reg);
+u32 hmc_ecc_writel(struct altera_sdram_plat *plat,
 		   u32 data, u32 reg);
-u32 ddr_sch_writel(struct altera_sdram_platdata *plat, u32 data,
+u32 ddr_sch_writel(struct altera_sdram_plat *plat, u32 data,
 		   u32 reg);
-int emif_clear(struct altera_sdram_platdata *plat);
-int emif_reset(struct altera_sdram_platdata *plat);
+int emif_clear(struct altera_sdram_plat *plat);
+int emif_reset(struct altera_sdram_plat *plat);
 int poll_hmc_clock_status(void);
 void sdram_clear_mem(phys_addr_t addr, phys_size_t size);
 void sdram_init_ecc_bits(struct bd_info *bd);
 void sdram_size_check(struct bd_info *bd);
-phys_size_t sdram_calculate_size(struct altera_sdram_platdata *plat);
+phys_size_t sdram_calculate_size(struct altera_sdram_plat *plat);
 int sdram_mmr_init_full(struct udevice *dev);
 
 #endif /* _SDRAM_SOC64_H_ */
diff --git a/drivers/gpio/altera_pio.c b/drivers/gpio/altera_pio.c
index 24e047e..f4582b1 100644
--- a/drivers/gpio/altera_pio.c
+++ b/drivers/gpio/altera_pio.c
@@ -19,7 +19,7 @@
 	u32	direction;		/* Direction register */
 };
 
-struct altera_pio_platdata {
+struct altera_pio_plat {
 	struct altera_pio_regs *regs;
 	int gpio_count;
 	const char *bank_name;
@@ -27,7 +27,7 @@
 
 static int altera_pio_direction_input(struct udevice *dev, unsigned pin)
 {
-	struct altera_pio_platdata *plat = dev_get_plat(dev);
+	struct altera_pio_plat *plat = dev_get_plat(dev);
 	struct altera_pio_regs *const regs = plat->regs;
 
 	clrbits_le32(&regs->direction, 1 << pin);
@@ -38,7 +38,7 @@
 static int altera_pio_direction_output(struct udevice *dev, unsigned pin,
 				     int val)
 {
-	struct altera_pio_platdata *plat = dev_get_plat(dev);
+	struct altera_pio_plat *plat = dev_get_plat(dev);
 	struct altera_pio_regs *const regs = plat->regs;
 
 	if (val)
@@ -53,7 +53,7 @@
 
 static int altera_pio_get_value(struct udevice *dev, unsigned pin)
 {
-	struct altera_pio_platdata *plat = dev_get_plat(dev);
+	struct altera_pio_plat *plat = dev_get_plat(dev);
 	struct altera_pio_regs *const regs = plat->regs;
 
 	return !!(readl(&regs->data) & (1 << pin));
@@ -62,7 +62,7 @@
 
 static int altera_pio_set_value(struct udevice *dev, unsigned pin, int val)
 {
-	struct altera_pio_platdata *plat = dev_get_plat(dev);
+	struct altera_pio_plat *plat = dev_get_plat(dev);
 	struct altera_pio_regs *const regs = plat->regs;
 
 	if (val)
@@ -76,7 +76,7 @@
 static int altera_pio_probe(struct udevice *dev)
 {
 	struct gpio_dev_priv *uc_priv = dev_get_uclass_priv(dev);
-	struct altera_pio_platdata *plat = dev_get_plat(dev);
+	struct altera_pio_plat *plat = dev_get_plat(dev);
 
 	uc_priv->gpio_count = plat->gpio_count;
 	uc_priv->bank_name = plat->bank_name;
@@ -86,7 +86,7 @@
 
 static int altera_pio_of_to_plat(struct udevice *dev)
 {
-	struct altera_pio_platdata *plat = dev_get_plat(dev);
+	struct altera_pio_plat *plat = dev_get_plat(dev);
 
 	plat->regs = map_physmem(dev_read_addr(dev),
 				 sizeof(struct altera_pio_regs),
@@ -117,6 +117,6 @@
 	.of_match	= altera_pio_ids,
 	.ops		= &altera_pio_ops,
 	.of_to_plat = altera_pio_of_to_plat,
-	.plat_auto	= sizeof(struct altera_pio_platdata),
+	.plat_auto	= sizeof(struct altera_pio_plat),
 	.probe		= altera_pio_probe,
 };
diff --git a/drivers/gpio/at91_gpio.c b/drivers/gpio/at91_gpio.c
index 7b604e4..1409db5 100644
--- a/drivers/gpio/at91_gpio.c
+++ b/drivers/gpio/at91_gpio.c
@@ -590,7 +590,7 @@
 static int at91_gpio_probe(struct udevice *dev)
 {
 	struct at91_port_priv *port = dev_get_priv(dev);
-	struct at91_port_platdata *plat = dev_get_plat(dev);
+	struct at91_port_plat *plat = dev_get_plat(dev);
 	struct gpio_dev_priv *uc_priv = dev_get_uclass_priv(dev);
 	struct clk clk;
 	int ret;
@@ -629,7 +629,7 @@
 	.id	= UCLASS_GPIO,
 #if CONFIG_IS_ENABLED(OF_CONTROL)
 	.of_match = at91_gpio_ids,
-	.plat_auto	= sizeof(struct at91_port_platdata),
+	.plat_auto	= sizeof(struct at91_port_plat),
 #endif
 	.ops	= &gpio_at91_ops,
 	.probe	= at91_gpio_probe,
diff --git a/drivers/gpio/atmel_pio4.c b/drivers/gpio/atmel_pio4.c
index e25115f..e7b8f23 100644
--- a/drivers/gpio/atmel_pio4.c
+++ b/drivers/gpio/atmel_pio4.c
@@ -176,14 +176,14 @@
 	u32 nbanks;
 };
 
-struct atmel_pio4_platdata {
+struct atmel_pio4_plat {
 	struct atmel_pio4_port *reg_base;
 };
 
 static struct atmel_pio4_port *atmel_pio4_bank_base(struct udevice *dev,
 						    u32 bank)
 {
-	struct atmel_pio4_platdata *plat = dev_get_plat(dev);
+	struct atmel_pio4_plat *plat = dev_get_plat(dev);
 	struct atmel_pio4_port *port_base =
 			(struct atmel_pio4_port *)((u32)plat->reg_base +
 			ATMEL_PIO_BANK_OFFSET * bank);
@@ -281,7 +281,7 @@
 
 static int atmel_pio4_probe(struct udevice *dev)
 {
-	struct atmel_pio4_platdata *plat = dev_get_plat(dev);
+	struct atmel_pio4_plat *plat = dev_get_plat(dev);
 	struct gpio_dev_priv *uc_priv = dev_get_uclass_priv(dev);
 	struct atmel_pioctrl_data *pioctrl_data;
 	struct clk clk;
@@ -338,7 +338,7 @@
 	.probe	= atmel_pio4_probe,
 	.bind	= atmel_pio4_bind,
 	.of_match = atmel_pio4_ids,
-	.plat_auto	= sizeof(struct atmel_pio4_platdata),
+	.plat_auto	= sizeof(struct atmel_pio4_plat),
 };
 
 #endif
diff --git a/drivers/gpio/bcm2835_gpio.c b/drivers/gpio/bcm2835_gpio.c
index a348c68..704a6fa 100644
--- a/drivers/gpio/bcm2835_gpio.c
+++ b/drivers/gpio/bcm2835_gpio.c
@@ -102,7 +102,7 @@
 static int bcm2835_gpio_probe(struct udevice *dev)
 {
 	struct bcm2835_gpios *gpios = dev_get_priv(dev);
-	struct bcm2835_gpio_platdata *plat = dev_get_plat(dev);
+	struct bcm2835_gpio_plat *plat = dev_get_plat(dev);
 	struct gpio_dev_priv *uc_priv = dev_get_uclass_priv(dev);
 
 	uc_priv->bank_name = "GPIO";
@@ -118,7 +118,7 @@
 #if CONFIG_IS_ENABLED(OF_CONTROL)
 static int bcm2835_gpio_of_to_plat(struct udevice *dev)
 {
-	struct bcm2835_gpio_platdata *plat = dev_get_plat(dev);
+	struct bcm2835_gpio_plat *plat = dev_get_plat(dev);
 	fdt_addr_t addr;
 
 	addr = dev_read_addr(dev);
@@ -134,7 +134,7 @@
 	.name	= "gpio_bcm2835",
 	.id	= UCLASS_GPIO,
 	.of_to_plat = of_match_ptr(bcm2835_gpio_of_to_plat),
-	.plat_auto	= sizeof(struct bcm2835_gpio_platdata),
+	.plat_auto	= sizeof(struct bcm2835_gpio_plat),
 	.ops	= &gpio_bcm2835_ops,
 	.probe	= bcm2835_gpio_probe,
 	.flags	= DM_FLAG_PRE_RELOC,
diff --git a/drivers/gpio/da8xx_gpio.c b/drivers/gpio/da8xx_gpio.c
index b47d65d..9a52a5e 100644
--- a/drivers/gpio/da8xx_gpio.c
+++ b/drivers/gpio/da8xx_gpio.c
@@ -522,7 +522,7 @@
 static int davinci_gpio_probe(struct udevice *dev)
 {
 	struct davinci_gpio_bank *bank = dev_get_priv(dev);
-	struct davinci_gpio_platdata *plat = dev_get_plat(dev);
+	struct davinci_gpio_plat *plat = dev_get_plat(dev);
 	struct gpio_dev_priv *uc_priv = dev_get_uclass_priv(dev);
 	const void *fdt = gd->fdt_blob;
 	int node = dev_of_offset(dev);
@@ -542,7 +542,7 @@
 
 static int davinci_gpio_of_to_plat(struct udevice *dev)
 {
-	struct davinci_gpio_platdata *plat = dev_get_plat(dev);
+	struct davinci_gpio_plat *plat = dev_get_plat(dev);
 	fdt_addr_t addr;
 
 	addr = dev_read_addr(dev);
@@ -560,7 +560,7 @@
 	.of_to_plat = of_match_ptr(davinci_gpio_of_to_plat),
 	.of_match = davinci_gpio_ids,
 	.bind   = dm_scan_fdt_dev,
-	.plat_auto	= sizeof(struct davinci_gpio_platdata),
+	.plat_auto	= sizeof(struct davinci_gpio_plat),
 	.probe	= davinci_gpio_probe,
 	.priv_auto	= sizeof(struct davinci_gpio_bank),
 };
diff --git a/drivers/gpio/da8xx_gpio.h b/drivers/gpio/da8xx_gpio.h
index 849e8d2..ca59d6a 100644
--- a/drivers/gpio/da8xx_gpio.h
+++ b/drivers/gpio/da8xx_gpio.h
@@ -31,7 +31,7 @@
 #if CONFIG_IS_ENABLED(DM_GPIO)
 
 /* Information about a GPIO bank */
-struct davinci_gpio_platdata {
+struct davinci_gpio_plat {
 	int bank_index;
 	ulong base;	/* address of registers in physical memory */
 	const char *port_name;
diff --git a/drivers/gpio/dwapb_gpio.c b/drivers/gpio/dwapb_gpio.c
index 42158bd..acd77b6 100644
--- a/drivers/gpio/dwapb_gpio.c
+++ b/drivers/gpio/dwapb_gpio.c
@@ -36,7 +36,7 @@
 	struct reset_ctl_bulk	resets;
 };
 
-struct gpio_dwapb_platdata {
+struct gpio_dwapb_plat {
 	const char	*name;
 	int		bank;
 	int		pins;
@@ -45,7 +45,7 @@
 
 static int dwapb_gpio_direction_input(struct udevice *dev, unsigned pin)
 {
-	struct gpio_dwapb_platdata *plat = dev_get_plat(dev);
+	struct gpio_dwapb_plat *plat = dev_get_plat(dev);
 
 	clrbits_le32(plat->base + GPIO_SWPORT_DDR(plat->bank), 1 << pin);
 	return 0;
@@ -54,7 +54,7 @@
 static int dwapb_gpio_direction_output(struct udevice *dev, unsigned pin,
 				     int val)
 {
-	struct gpio_dwapb_platdata *plat = dev_get_plat(dev);
+	struct gpio_dwapb_plat *plat = dev_get_plat(dev);
 
 	setbits_le32(plat->base + GPIO_SWPORT_DDR(plat->bank), 1 << pin);
 
@@ -68,7 +68,7 @@
 
 static int dwapb_gpio_set_value(struct udevice *dev, unsigned pin, int val)
 {
-	struct gpio_dwapb_platdata *plat = dev_get_plat(dev);
+	struct gpio_dwapb_plat *plat = dev_get_plat(dev);
 
 	if (val)
 		setbits_le32(plat->base + GPIO_SWPORT_DR(plat->bank), 1 << pin);
@@ -80,7 +80,7 @@
 
 static int dwapb_gpio_get_function(struct udevice *dev, unsigned offset)
 {
-	struct gpio_dwapb_platdata *plat = dev_get_plat(dev);
+	struct gpio_dwapb_plat *plat = dev_get_plat(dev);
 	u32 gpio;
 
 	gpio = readl(plat->base + GPIO_SWPORT_DDR(plat->bank));
@@ -93,7 +93,7 @@
 
 static int dwapb_gpio_get_value(struct udevice *dev, unsigned pin)
 {
-	struct gpio_dwapb_platdata *plat = dev_get_plat(dev);
+	struct gpio_dwapb_plat *plat = dev_get_plat(dev);
 	u32 value;
 
 	if (dwapb_gpio_get_function(dev, pin) == GPIOF_OUTPUT)
@@ -141,7 +141,7 @@
 static int gpio_dwapb_probe(struct udevice *dev)
 {
 	struct gpio_dev_priv *priv = dev_get_uclass_priv(dev);
-	struct gpio_dwapb_platdata *plat = dev->plat;
+	struct gpio_dwapb_plat *plat = dev->plat;
 
 	if (!plat) {
 		/* Reset on parent device only */
@@ -156,7 +156,7 @@
 
 static int gpio_dwapb_bind(struct udevice *dev)
 {
-	struct gpio_dwapb_platdata *plat = dev_get_plat(dev);
+	struct gpio_dwapb_plat *plat = dev_get_plat(dev);
 	struct udevice *subdev;
 	fdt_addr_t base;
 	int ret, bank = 0;
@@ -215,7 +215,7 @@
 
 static int gpio_dwapb_remove(struct udevice *dev)
 {
-	struct gpio_dwapb_platdata *plat = dev_get_plat(dev);
+	struct gpio_dwapb_plat *plat = dev_get_plat(dev);
 	struct gpio_dwapb_priv *priv = dev_get_priv(dev);
 
 	if (!plat && priv)
diff --git a/drivers/gpio/hi6220_gpio.c b/drivers/gpio/hi6220_gpio.c
index 02a3782..f5e5fc6 100644
--- a/drivers/gpio/hi6220_gpio.c
+++ b/drivers/gpio/hi6220_gpio.c
@@ -66,7 +66,7 @@
 static int hi6220_gpio_probe(struct udevice *dev)
 {
 	struct gpio_bank *bank = dev_get_priv(dev);
-	struct hikey_gpio_platdata *plat = dev_get_plat(dev);
+	struct hikey_gpio_plat *plat = dev_get_plat(dev);
 	struct gpio_dev_priv *uc_priv = dev->uclass_priv;
 	char name[18], *str;
 
diff --git a/drivers/gpio/intel_broadwell_gpio.c b/drivers/gpio/intel_broadwell_gpio.c
index 9cd0745..68d72ee 100644
--- a/drivers/gpio/intel_broadwell_gpio.c
+++ b/drivers/gpio/intel_broadwell_gpio.c
@@ -117,7 +117,7 @@
 
 static int broadwell_gpio_probe(struct udevice *dev)
 {
-	struct broadwell_bank_platdata *plat = dev_get_plat(dev);
+	struct broadwell_bank_plat *plat = dev_get_plat(dev);
 	struct gpio_dev_priv *uc_priv = dev_get_uclass_priv(dev);
 	struct broadwell_bank_priv *priv = dev_get_priv(dev);
 	struct udevice *pinctrl;
@@ -141,7 +141,7 @@
 
 static int broadwell_gpio_of_to_plat(struct udevice *dev)
 {
-	struct broadwell_bank_platdata *plat = dev_get_plat(dev);
+	struct broadwell_bank_plat *plat = dev_get_plat(dev);
 	u32 gpiobase;
 	int bank;
 	int ret;
@@ -185,5 +185,5 @@
 	.of_to_plat	= broadwell_gpio_of_to_plat,
 	.probe	= broadwell_gpio_probe,
 	.priv_auto	= sizeof(struct broadwell_bank_priv),
-	.plat_auto	= sizeof(struct broadwell_bank_platdata),
+	.plat_auto	= sizeof(struct broadwell_bank_plat),
 };
diff --git a/drivers/gpio/intel_ich6_gpio.c b/drivers/gpio/intel_ich6_gpio.c
index add13d8..11d4be0 100644
--- a/drivers/gpio/intel_ich6_gpio.c
+++ b/drivers/gpio/intel_ich6_gpio.c
@@ -95,7 +95,7 @@
 
 static int gpio_ich6_of_to_plat(struct udevice *dev)
 {
-	struct ich6_bank_platdata *plat = dev_get_plat(dev);
+	struct ich6_bank_plat *plat = dev_get_plat(dev);
 	u32 gpiobase;
 	int offset;
 	int ret;
@@ -119,7 +119,7 @@
 
 static int ich6_gpio_probe(struct udevice *dev)
 {
-	struct ich6_bank_platdata *plat = dev_get_plat(dev);
+	struct ich6_bank_plat *plat = dev_get_plat(dev);
 	struct gpio_dev_priv *uc_priv = dev_get_uclass_priv(dev);
 	struct ich6_bank_priv *bank = dev_get_priv(dev);
 	const void *prop;
@@ -237,5 +237,5 @@
 	.of_to_plat	= gpio_ich6_of_to_plat,
 	.probe	= ich6_gpio_probe,
 	.priv_auto	= sizeof(struct ich6_bank_priv),
-	.plat_auto	= sizeof(struct ich6_bank_platdata),
+	.plat_auto	= sizeof(struct ich6_bank_plat),
 };
diff --git a/drivers/gpio/iproc_gpio.c b/drivers/gpio/iproc_gpio.c
index 1a3a9cb..0561b36 100644
--- a/drivers/gpio/iproc_gpio.c
+++ b/drivers/gpio/iproc_gpio.c
@@ -55,7 +55,7 @@
  * @name:	gpio device name, ex GPIO0, GPIO1
  * @ngpios:	total number of gpios
  */
-struct iproc_gpio_platdata {
+struct iproc_gpio_plat {
 	struct udevice *pinctrl_dev;
 	struct list_head gpiomap;
 	void __iomem *base;
@@ -73,7 +73,7 @@
  * @gpio: GPIO pin
  * @set: set or clear
  */
-static inline void iproc_gpio_set_bit(struct iproc_gpio_platdata *plat,
+static inline void iproc_gpio_set_bit(struct iproc_gpio_plat *plat,
 				      u32 reg, u32 gpio, bool set)
 {
 	u32 offset = GPIO_REG(gpio, reg);
@@ -83,7 +83,7 @@
 			(set ? BIT(shift) : 0));
 }
 
-static inline bool iproc_gpio_get_bit(struct iproc_gpio_platdata *plat,
+static inline bool iproc_gpio_get_bit(struct iproc_gpio_plat *plat,
 				      u32 reg, u32 gpio)
 {
 	u32 offset = GPIO_REG(gpio, reg);
@@ -98,7 +98,7 @@
  * @plat: iproc GPIO device
  * @gpio: GPIO pin
  */
-static u32 iproc_get_pctrl_from_gpio(struct iproc_gpio_platdata *plat, u32 gpio)
+static u32 iproc_get_pctrl_from_gpio(struct iproc_gpio_plat *plat, u32 gpio)
 {
 	struct iproc_gpio_pctrl_map *range = NULL;
 	struct list_head *pos, *tmp;
@@ -127,7 +127,7 @@
  */
 static int iproc_get_gpio_pctrl_mapping(struct udevice *dev)
 {
-	struct iproc_gpio_platdata *plat = dev_get_plat(dev);
+	struct iproc_gpio_plat *plat = dev_get_plat(dev);
 	struct iproc_gpio_pctrl_map *range = NULL;
 	struct ofnode_phandle_args args;
 	int index = 0, ret;
@@ -153,7 +153,7 @@
 
 static int iproc_gpio_request(struct udevice *dev, u32 gpio, const char *label)
 {
-	struct iproc_gpio_platdata *plat = dev_get_plat(dev);
+	struct iproc_gpio_plat *plat = dev_get_plat(dev);
 	u32 pctrl;
 
 	/* nothing to do if there is no corresponding pinctrl device */
@@ -167,7 +167,7 @@
 
 static int iproc_gpio_direction_input(struct udevice *dev, u32 gpio)
 {
-	struct iproc_gpio_platdata *plat = dev_get_plat(dev);
+	struct iproc_gpio_plat *plat = dev_get_plat(dev);
 
 	iproc_gpio_set_bit(plat, OUT_EN_OFFSET, gpio, false);
 	dev_dbg(dev, "gpio:%u set input\n", gpio);
@@ -177,7 +177,7 @@
 
 static int iproc_gpio_direction_output(struct udevice *dev, u32 gpio, int value)
 {
-	struct iproc_gpio_platdata *plat = dev_get_plat(dev);
+	struct iproc_gpio_plat *plat = dev_get_plat(dev);
 
 	iproc_gpio_set_bit(plat, OUT_EN_OFFSET, gpio, true);
 	iproc_gpio_set_bit(plat, DATA_OUT_OFFSET, gpio, value);
@@ -188,7 +188,7 @@
 
 static int iproc_gpio_get_value(struct udevice *dev, u32 gpio)
 {
-	struct iproc_gpio_platdata *plat = dev_get_plat(dev);
+	struct iproc_gpio_plat *plat = dev_get_plat(dev);
 	int value;
 
 	value = iproc_gpio_get_bit(plat, DATA_IN_OFFSET, gpio);
@@ -199,7 +199,7 @@
 
 static int iproc_gpio_set_value(struct udevice *dev, u32 gpio, int value)
 {
-	struct iproc_gpio_platdata *plat = dev_get_plat(dev);
+	struct iproc_gpio_plat *plat = dev_get_plat(dev);
 
 	if (iproc_gpio_get_bit(plat, OUT_EN_OFFSET, gpio))
 		iproc_gpio_set_bit(plat, DATA_OUT_OFFSET, gpio, value);
@@ -210,7 +210,7 @@
 
 static int iproc_gpio_get_function(struct udevice *dev, u32 gpio)
 {
-	struct iproc_gpio_platdata *plat = dev_get_plat(dev);
+	struct iproc_gpio_plat *plat = dev_get_plat(dev);
 
 	if (iproc_gpio_get_bit(plat, OUT_EN_OFFSET, gpio))
 		return GPIOF_OUTPUT;
@@ -220,7 +220,7 @@
 
 static int iproc_gpio_of_to_plat(struct udevice *dev)
 {
-	struct iproc_gpio_platdata *plat = dev_get_plat(dev);
+	struct iproc_gpio_plat *plat = dev_get_plat(dev);
 	struct gpio_dev_priv *uc_priv = dev_get_uclass_priv(dev);
 	int ret;
 	char name[10];
@@ -286,5 +286,5 @@
 	.of_match		= iproc_gpio_ids,
 	.ops			= &iproc_gpio_ops,
 	.of_to_plat	= iproc_gpio_of_to_plat,
-	.plat_auto	= sizeof(struct iproc_gpio_platdata),
+	.plat_auto	= sizeof(struct iproc_gpio_plat),
 };
diff --git a/drivers/gpio/mpc83xx_spisel_boot.c b/drivers/gpio/mpc83xx_spisel_boot.c
index a35e4de..fd26a36 100644
--- a/drivers/gpio/mpc83xx_spisel_boot.c
+++ b/drivers/gpio/mpc83xx_spisel_boot.c
@@ -78,7 +78,7 @@
 }
 #endif
 
-static int mpc83xx_spisel_boot_platdata_to_priv(struct udevice *dev)
+static int mpc83xx_spisel_boot_plat_to_priv(struct udevice *dev)
 {
 	struct mpc83xx_spisel_boot *priv = dev_get_priv(dev);
 	struct mpc8xxx_gpio_plat *plat = dev_get_plat(dev);
@@ -107,7 +107,7 @@
 	struct mpc83xx_spisel_boot *data = dev_get_priv(dev);
 	char name[32], *str;
 
-	mpc83xx_spisel_boot_platdata_to_priv(dev);
+	mpc83xx_spisel_boot_plat_to_priv(dev);
 
 	snprintf(name, sizeof(name), "MPC@%lx_", data->addr);
 	str = strdup(name);
diff --git a/drivers/gpio/mpc8xxx_gpio.c b/drivers/gpio/mpc8xxx_gpio.c
index dfc1dc6..2bc1a0d 100644
--- a/drivers/gpio/mpc8xxx_gpio.c
+++ b/drivers/gpio/mpc8xxx_gpio.c
@@ -219,7 +219,7 @@
 }
 #endif
 
-static int mpc8xxx_gpio_platdata_to_priv(struct udevice *dev)
+static int mpc8xxx_gpio_plat_to_priv(struct udevice *dev)
 {
 	struct mpc8xxx_gpio_data *priv = dev_get_priv(dev);
 	struct mpc8xxx_gpio_plat *plat = dev_get_plat(dev);
@@ -249,7 +249,7 @@
 	struct mpc8xxx_gpio_data *data = dev_get_priv(dev);
 	char name[32], *str;
 
-	mpc8xxx_gpio_platdata_to_priv(dev);
+	mpc8xxx_gpio_plat_to_priv(dev);
 
 	snprintf(name, sizeof(name), "MPC@%lx_", data->addr);
 	str = strdup(name);
diff --git a/drivers/gpio/mt7621_gpio.c b/drivers/gpio/mt7621_gpio.c
index e48ddb5..65b4cbf 100644
--- a/drivers/gpio/mt7621_gpio.c
+++ b/drivers/gpio/mt7621_gpio.c
@@ -38,20 +38,20 @@
 
 static void __iomem *mediatek_gpio_membase;
 
-struct mediatek_gpio_platdata {
+struct mediatek_gpio_plat {
 	char bank_name[3];	/* Name of bank, e.g. "PA", "PB" etc */
 	int gpio_count;
 	int bank;
 };
 
-static u32 reg_offs(struct mediatek_gpio_platdata *plat, int reg)
+static u32 reg_offs(struct mediatek_gpio_plat *plat, int reg)
 {
 	return (reg * 0x10) + (plat->bank * 0x4);
 }
 
 static int mediatek_gpio_get_value(struct udevice *dev, unsigned int offset)
 {
-	struct mediatek_gpio_platdata *plat = dev_get_plat(dev);
+	struct mediatek_gpio_plat *plat = dev_get_plat(dev);
 
 	return !!(ioread32(mediatek_gpio_membase +
 			   reg_offs(plat, GPIO_REG_DATA)) & BIT(offset));
@@ -60,7 +60,7 @@
 static int mediatek_gpio_set_value(struct udevice *dev, unsigned int offset,
 				   int value)
 {
-	struct mediatek_gpio_platdata *plat = dev_get_plat(dev);
+	struct mediatek_gpio_plat *plat = dev_get_plat(dev);
 
 	iowrite32(BIT(offset), mediatek_gpio_membase +
 		  reg_offs(plat, value ? GPIO_REG_DSET : GPIO_REG_DCLR));
@@ -70,7 +70,7 @@
 
 static int mediatek_gpio_direction_input(struct udevice *dev, unsigned int offset)
 {
-	struct mediatek_gpio_platdata *plat = dev_get_plat(dev);
+	struct mediatek_gpio_plat *plat = dev_get_plat(dev);
 
 	clrbits_le32(mediatek_gpio_membase + reg_offs(plat, GPIO_REG_CTRL),
 		     BIT(offset));
@@ -81,7 +81,7 @@
 static int mediatek_gpio_direction_output(struct udevice *dev, unsigned int offset,
 					  int value)
 {
-	struct mediatek_gpio_platdata *plat = dev_get_plat(dev);
+	struct mediatek_gpio_plat *plat = dev_get_plat(dev);
 
 	setbits_le32(mediatek_gpio_membase + reg_offs(plat, GPIO_REG_CTRL),
 		     BIT(offset));
@@ -92,7 +92,7 @@
 
 static int mediatek_gpio_get_function(struct udevice *dev, unsigned int offset)
 {
-	struct mediatek_gpio_platdata *plat = dev_get_plat(dev);
+	struct mediatek_gpio_plat *plat = dev_get_plat(dev);
 	u32 t;
 
 	t = ioread32(mediatek_gpio_membase + reg_offs(plat, GPIO_REG_CTRL));
@@ -112,7 +112,7 @@
 
 static int gpio_mediatek_probe(struct udevice *dev)
 {
-	struct mediatek_gpio_platdata *plat = dev_get_plat(dev);
+	struct mediatek_gpio_plat *plat = dev_get_plat(dev);
 	struct gpio_dev_priv *uc_priv = dev_get_uclass_priv(dev);
 
 	/* Tell the uclass how many GPIOs we have */
@@ -130,7 +130,7 @@
  */
 static int gpio_mediatek_bind(struct udevice *parent)
 {
-	struct mediatek_gpio_platdata *plat = parent->plat;
+	struct mediatek_gpio_plat *plat = parent->plat;
 	ofnode node;
 	int bank = 0;
 	int ret;
@@ -145,7 +145,7 @@
 
 	for (node = dev_read_first_subnode(parent); ofnode_valid(node);
 	     node = dev_read_next_subnode(node)) {
-		struct mediatek_gpio_platdata *plat;
+		struct mediatek_gpio_plat *plat;
 		struct udevice *dev;
 
 		plat = calloc(1, sizeof(*plat));
diff --git a/drivers/gpio/mxs_gpio.c b/drivers/gpio/mxs_gpio.c
index 30daf4a..5ad65e4 100644
--- a/drivers/gpio/mxs_gpio.c
+++ b/drivers/gpio/mxs_gpio.c
@@ -150,7 +150,7 @@
  * Bank 4: 0-20 -> 21 PINS
  */
 
-struct mxs_gpio_platdata {
+struct mxs_gpio_plat {
 #if CONFIG_IS_ENABLED(OF_PLATDATA)
 	struct dtd_fsl_imx23_gpio dtplat;
 #endif
@@ -235,7 +235,7 @@
 
 static int mxs_gpio_probe(struct udevice *dev)
 {
-	struct mxs_gpio_platdata *plat = dev_get_plat(dev);
+	struct mxs_gpio_plat *plat = dev_get_plat(dev);
 	struct mxs_gpio_priv *priv = dev_get_priv(dev);
 	struct gpio_dev_priv *uc_priv = dev_get_uclass_priv(dev);
 	char name[16], *str;
@@ -264,7 +264,7 @@
 #if CONFIG_IS_ENABLED(OF_CONTROL) && !CONFIG_IS_ENABLED(OF_PLATDATA)
 static int mxs_of_to_plat(struct udevice *dev)
 {
-	struct mxs_gpio_platdata *plat = dev->plat;
+	struct mxs_gpio_plat *plat = dev->plat;
 	struct fdtdec_phandle_args args;
 	int node = dev_of_offset(dev);
 	int ret;
@@ -299,7 +299,7 @@
 	.ops	= &gpio_mxs_ops,
 	.probe	= mxs_gpio_probe,
 	.priv_auto	= sizeof(struct mxs_gpio_priv),
-	.plat_auto	= sizeof(struct mxs_gpio_platdata),
+	.plat_auto	= sizeof(struct mxs_gpio_plat),
 #if CONFIG_IS_ENABLED(OF_CONTROL) && !CONFIG_IS_ENABLED(OF_PLATDATA)
 	.of_match = mxs_gpio_ids,
 	.of_to_plat = mxs_of_to_plat,
diff --git a/drivers/gpio/nx_gpio.c b/drivers/gpio/nx_gpio.c
index 8c5fd67..52851e5 100644
--- a/drivers/gpio/nx_gpio.c
+++ b/drivers/gpio/nx_gpio.c
@@ -36,7 +36,7 @@
 	u32	pad;		/* Alive GPIO Input Value Register */
 };
 
-struct nx_gpio_platdata {
+struct nx_gpio_plat {
 	void *regs;
 	int gpio_count;
 	const char *bank_name;
@@ -44,7 +44,7 @@
 
 static int nx_alive_gpio_is_check(struct udevice *dev)
 {
-	struct nx_gpio_platdata *plat = dev_get_plat(dev);
+	struct nx_gpio_plat *plat = dev_get_plat(dev);
 	const char *bank_name = plat->bank_name;
 
 	if (!strcmp(bank_name, "gpio_alv"))
@@ -55,7 +55,7 @@
 
 static int nx_alive_gpio_direction_input(struct udevice *dev, unsigned int pin)
 {
-	struct nx_gpio_platdata *plat = dev_get_plat(dev);
+	struct nx_gpio_plat *plat = dev_get_plat(dev);
 	struct nx_alive_gpio_regs *const regs = plat->regs;
 
 	setbits_le32(&regs->outputenb_reset, 1 << pin);
@@ -66,7 +66,7 @@
 static int nx_alive_gpio_direction_output(struct udevice *dev, unsigned int pin,
 					  int val)
 {
-	struct nx_gpio_platdata *plat = dev_get_plat(dev);
+	struct nx_gpio_plat *plat = dev_get_plat(dev);
 	struct nx_alive_gpio_regs *const regs = plat->regs;
 
 	if (val)
@@ -81,7 +81,7 @@
 
 static int nx_alive_gpio_get_value(struct udevice *dev, unsigned int pin)
 {
-	struct nx_gpio_platdata *plat = dev_get_plat(dev);
+	struct nx_gpio_plat *plat = dev_get_plat(dev);
 	struct nx_alive_gpio_regs *const regs = plat->regs;
 	unsigned int mask = 1UL << pin;
 	unsigned int value;
@@ -94,7 +94,7 @@
 static int nx_alive_gpio_set_value(struct udevice *dev, unsigned int pin,
 				   int val)
 {
-	struct nx_gpio_platdata *plat = dev_get_plat(dev);
+	struct nx_gpio_plat *plat = dev_get_plat(dev);
 	struct nx_alive_gpio_regs *const regs = plat->regs;
 
 	if (val)
@@ -107,7 +107,7 @@
 
 static int nx_alive_gpio_get_function(struct udevice *dev, unsigned int pin)
 {
-	struct nx_gpio_platdata *plat = dev_get_plat(dev);
+	struct nx_gpio_plat *plat = dev_get_plat(dev);
 	struct nx_alive_gpio_regs *const regs = plat->regs;
 	unsigned int mask = (1UL << pin);
 	unsigned int output;
@@ -122,7 +122,7 @@
 
 static int nx_gpio_direction_input(struct udevice *dev, unsigned int pin)
 {
-	struct nx_gpio_platdata *plat = dev_get_plat(dev);
+	struct nx_gpio_plat *plat = dev_get_plat(dev);
 	struct nx_gpio_regs *const regs = plat->regs;
 
 	if (nx_alive_gpio_is_check(dev))
@@ -136,7 +136,7 @@
 static int nx_gpio_direction_output(struct udevice *dev, unsigned int pin,
 				    int val)
 {
-	struct nx_gpio_platdata *plat = dev_get_plat(dev);
+	struct nx_gpio_plat *plat = dev_get_plat(dev);
 	struct nx_gpio_regs *const regs = plat->regs;
 
 	if (nx_alive_gpio_is_check(dev))
@@ -154,7 +154,7 @@
 
 static int nx_gpio_get_value(struct udevice *dev, unsigned int pin)
 {
-	struct nx_gpio_platdata *plat = dev_get_plat(dev);
+	struct nx_gpio_plat *plat = dev_get_plat(dev);
 	struct nx_gpio_regs *const regs = plat->regs;
 	unsigned int mask = 1UL << pin;
 	unsigned int value;
@@ -169,7 +169,7 @@
 
 static int nx_gpio_set_value(struct udevice *dev, unsigned int pin, int val)
 {
-	struct nx_gpio_platdata *plat = dev_get_plat(dev);
+	struct nx_gpio_plat *plat = dev_get_plat(dev);
 	struct nx_gpio_regs *const regs = plat->regs;
 
 	if (nx_alive_gpio_is_check(dev))
@@ -185,7 +185,7 @@
 
 static int nx_gpio_get_function(struct udevice *dev, unsigned int pin)
 {
-	struct nx_gpio_platdata *plat = dev_get_plat(dev);
+	struct nx_gpio_plat *plat = dev_get_plat(dev);
 	struct nx_gpio_regs *const regs = plat->regs;
 	unsigned int mask = (1UL << pin);
 	unsigned int output;
@@ -204,7 +204,7 @@
 static int nx_gpio_probe(struct udevice *dev)
 {
 	struct gpio_dev_priv *uc_priv = dev_get_uclass_priv(dev);
-	struct nx_gpio_platdata *plat = dev_get_plat(dev);
+	struct nx_gpio_plat *plat = dev_get_plat(dev);
 
 	uc_priv->gpio_count = plat->gpio_count;
 	uc_priv->bank_name = plat->bank_name;
@@ -214,7 +214,7 @@
 
 static int nx_gpio_of_to_plat(struct udevice *dev)
 {
-	struct nx_gpio_platdata *plat = dev_get_plat(dev);
+	struct nx_gpio_plat *plat = dev_get_plat(dev);
 
 	plat->regs = map_physmem(devfdt_get_addr(dev),
 				 sizeof(struct nx_gpio_regs),
@@ -245,6 +245,6 @@
 	.of_match	= nx_gpio_ids,
 	.ops		= &nx_gpio_ops,
 	.of_to_plat = nx_gpio_of_to_plat,
-	.plat_auto	= sizeof(struct nx_gpio_platdata),
+	.plat_auto	= sizeof(struct nx_gpio_plat),
 	.probe		= nx_gpio_probe,
 };
diff --git a/drivers/gpio/omap_gpio.c b/drivers/gpio/omap_gpio.c
index 665f46d..400c6ca 100644
--- a/drivers/gpio/omap_gpio.c
+++ b/drivers/gpio/omap_gpio.c
@@ -285,7 +285,7 @@
 static int omap_gpio_probe(struct udevice *dev)
 {
 	struct gpio_bank *bank = dev_get_priv(dev);
-	struct omap_gpio_platdata *plat = dev_get_plat(dev);
+	struct omap_gpio_plat *plat = dev_get_plat(dev);
 	struct gpio_dev_priv *uc_priv = dev_get_uclass_priv(dev);
 	char name[18], *str;
 
@@ -302,7 +302,7 @@
 #if !CONFIG_IS_ENABLED(OF_CONTROL)
 static int omap_gpio_bind(struct udevice *dev)
 {
-	struct omap_gpio_platdata *plat = dev_get_plat(dev);
+	struct omap_gpio_plat *plat = dev_get_plat(dev);
 	fdt_addr_t base_addr;
 
 	if (plat)
@@ -344,7 +344,7 @@
 
 static int omap_gpio_of_to_plat(struct udevice *dev)
 {
-	struct omap_gpio_platdata *plat = dev_get_plat(dev);
+	struct omap_gpio_plat *plat = dev_get_plat(dev);
 	fdt_addr_t addr;
 
 	addr = dev_read_addr(dev);
@@ -363,7 +363,7 @@
 #if !CONFIG_IS_ENABLED(OF_PLATDATA)
 	.of_match = omap_gpio_ids,
 	.of_to_plat = of_match_ptr(omap_gpio_of_to_plat),
-	.plat_auto	= sizeof(struct omap_gpio_platdata),
+	.plat_auto	= sizeof(struct omap_gpio_plat),
 #endif
 #else
 	.bind   = omap_gpio_bind,
diff --git a/drivers/gpio/pcf8575_gpio.c b/drivers/gpio/pcf8575_gpio.c
index 3eed9e9..6d38646 100644
--- a/drivers/gpio/pcf8575_gpio.c
+++ b/drivers/gpio/pcf8575_gpio.c
@@ -125,7 +125,7 @@
 	return pcf8575_direction_output(dev, offset, value);
 }
 
-static int pcf8575_ofdata_platdata(struct udevice *dev)
+static int pcf8575_ofdata_plat(struct udevice *dev)
 {
 	struct pcf8575_chip *plat = dev_get_plat(dev);
 	struct gpio_dev_priv *uc_priv = dev_get_uclass_priv(dev);
@@ -175,7 +175,7 @@
 	.id	= UCLASS_GPIO,
 	.ops	= &pcf8575_gpio_ops,
 	.of_match = pcf8575_gpio_ids,
-	.of_to_plat = pcf8575_ofdata_platdata,
+	.of_to_plat = pcf8575_ofdata_plat,
 	.probe	= pcf8575_gpio_probe,
 	.plat_auto	= sizeof(struct pcf8575_chip),
 };
diff --git a/drivers/gpio/s5p_gpio.c b/drivers/gpio/s5p_gpio.c
index 6202e48..9de9541 100644
--- a/drivers/gpio/s5p_gpio.c
+++ b/drivers/gpio/s5p_gpio.c
@@ -34,7 +34,7 @@
 #define RATE_SET(gpio)			(0x1 << (gpio + 16))
 
 /* Platform data for each bank */
-struct exynos_gpio_platdata {
+struct exynos_gpio_plat {
 	struct s5p_gpio_bank *bank;
 	const char *bank_name;	/* Name of port, e.g. 'gpa0" */
 };
@@ -287,7 +287,7 @@
 {
 	struct gpio_dev_priv *uc_priv = dev_get_uclass_priv(dev);
 	struct exynos_bank_info *priv = dev->priv;
-	struct exynos_gpio_platdata *plat = dev->plat;
+	struct exynos_gpio_plat *plat = dev->plat;
 
 	/* Only child devices have ports */
 	if (!plat)
@@ -307,7 +307,7 @@
  */
 static int gpio_exynos_bind(struct udevice *parent)
 {
-	struct exynos_gpio_platdata *plat = parent->plat;
+	struct exynos_gpio_plat *plat = parent->plat;
 	struct s5p_gpio_bank *bank, *base;
 	const void *blob = gd->fdt_blob;
 	int node;
@@ -320,7 +320,7 @@
 	for (node = fdt_first_subnode(blob, dev_of_offset(parent)), bank = base;
 	     node > 0;
 	     node = fdt_next_subnode(blob, node), bank++) {
-		struct exynos_gpio_platdata *plat;
+		struct exynos_gpio_plat *plat;
 		struct udevice *dev;
 		fdt_addr_t reg;
 		int ret;
diff --git a/drivers/gpio/sifive-gpio.c b/drivers/gpio/sifive-gpio.c
index 933cace..abd1f62 100644
--- a/drivers/gpio/sifive-gpio.c
+++ b/drivers/gpio/sifive-gpio.c
@@ -15,7 +15,7 @@
 
 static int sifive_gpio_probe(struct udevice *dev)
 {
-	struct sifive_gpio_platdata *plat = dev_get_plat(dev);
+	struct sifive_gpio_plat *plat = dev_get_plat(dev);
 	struct gpio_dev_priv *uc_priv = dev_get_uclass_priv(dev);
 	char name[18], *str;
 
@@ -49,7 +49,7 @@
 
 static int sifive_gpio_direction_input(struct udevice *dev, u32 offset)
 {
-	struct sifive_gpio_platdata *plat = dev_get_plat(dev);
+	struct sifive_gpio_plat *plat = dev_get_plat(dev);
 	struct gpio_dev_priv *uc_priv = dev_get_uclass_priv(dev);
 
 	if (offset > uc_priv->gpio_count)
@@ -65,7 +65,7 @@
 static int sifive_gpio_direction_output(struct udevice *dev, u32 offset,
 					int value)
 {
-	struct sifive_gpio_platdata *plat = dev_get_plat(dev);
+	struct sifive_gpio_plat *plat = dev_get_plat(dev);
 	struct gpio_dev_priv *uc_priv = dev_get_uclass_priv(dev);
 
 	if (offset > uc_priv->gpio_count)
@@ -83,7 +83,7 @@
 
 static int sifive_gpio_get_value(struct udevice *dev, u32 offset)
 {
-	struct sifive_gpio_platdata *plat = dev_get_plat(dev);
+	struct sifive_gpio_plat *plat = dev_get_plat(dev);
 	struct gpio_dev_priv *uc_priv = dev_get_uclass_priv(dev);
 	int val;
 	int dir;
@@ -104,7 +104,7 @@
 
 static int sifive_gpio_set_value(struct udevice *dev, u32 offset, int value)
 {
-	struct sifive_gpio_platdata *plat = dev_get_plat(dev);
+	struct sifive_gpio_plat *plat = dev_get_plat(dev);
 	struct gpio_dev_priv *uc_priv = dev_get_uclass_priv(dev);
 
 	if (offset > uc_priv->gpio_count)
@@ -117,7 +117,7 @@
 
 static int sifive_gpio_get_function(struct udevice *dev, unsigned int offset)
 {
-	struct sifive_gpio_platdata *plat = dev_get_plat(dev);
+	struct sifive_gpio_plat *plat = dev_get_plat(dev);
 	u32	outdir, indir, val;
 	struct gpio_dev_priv *uc_priv = dev_get_uclass_priv(dev);
 
@@ -156,7 +156,7 @@
 
 static int sifive_gpio_of_to_plat(struct udevice *dev)
 {
-	struct sifive_gpio_platdata *plat = dev_get_plat(dev);
+	struct sifive_gpio_plat *plat = dev_get_plat(dev);
 	fdt_addr_t addr;
 
 	addr = dev_read_addr(dev);
@@ -172,7 +172,7 @@
 	.id	= UCLASS_GPIO,
 	.of_match = sifive_gpio_match,
 	.of_to_plat = of_match_ptr(sifive_gpio_of_to_plat),
-	.plat_auto	= sizeof(struct sifive_gpio_platdata),
+	.plat_auto	= sizeof(struct sifive_gpio_plat),
 	.ops	= &sifive_gpio_ops,
 	.probe	= sifive_gpio_probe,
 };
diff --git a/drivers/gpio/sunxi_gpio.c b/drivers/gpio/sunxi_gpio.c
index 567bd64..75494c7 100644
--- a/drivers/gpio/sunxi_gpio.c
+++ b/drivers/gpio/sunxi_gpio.c
@@ -22,7 +22,7 @@
 
 #define SUNXI_GPIOS_PER_BANK	SUNXI_GPIO_A_NR
 
-struct sunxi_gpio_platdata {
+struct sunxi_gpio_plat {
 	struct sunxi_gpio *regs;
 	const char *bank_name;	/* Name of bank, e.g. "B" */
 	int gpio_count;
@@ -158,7 +158,7 @@
 
 static int sunxi_gpio_direction_input(struct udevice *dev, unsigned offset)
 {
-	struct sunxi_gpio_platdata *plat = dev_get_plat(dev);
+	struct sunxi_gpio_plat *plat = dev_get_plat(dev);
 
 	sunxi_gpio_set_cfgbank(plat->regs, offset, SUNXI_GPIO_INPUT);
 
@@ -168,7 +168,7 @@
 static int sunxi_gpio_direction_output(struct udevice *dev, unsigned offset,
 				       int value)
 {
-	struct sunxi_gpio_platdata *plat = dev_get_plat(dev);
+	struct sunxi_gpio_plat *plat = dev_get_plat(dev);
 	u32 num = GPIO_NUM(offset);
 
 	sunxi_gpio_set_cfgbank(plat->regs, offset, SUNXI_GPIO_OUTPUT);
@@ -179,7 +179,7 @@
 
 static int sunxi_gpio_get_value(struct udevice *dev, unsigned offset)
 {
-	struct sunxi_gpio_platdata *plat = dev_get_plat(dev);
+	struct sunxi_gpio_plat *plat = dev_get_plat(dev);
 	u32 num = GPIO_NUM(offset);
 	unsigned dat;
 
@@ -192,7 +192,7 @@
 static int sunxi_gpio_set_value(struct udevice *dev, unsigned offset,
 				int value)
 {
-	struct sunxi_gpio_platdata *plat = dev_get_plat(dev);
+	struct sunxi_gpio_plat *plat = dev_get_plat(dev);
 	u32 num = GPIO_NUM(offset);
 
 	clrsetbits_le32(&plat->regs->dat, 1 << num, value ? (1 << num) : 0);
@@ -201,7 +201,7 @@
 
 static int sunxi_gpio_get_function(struct udevice *dev, unsigned offset)
 {
-	struct sunxi_gpio_platdata *plat = dev_get_plat(dev);
+	struct sunxi_gpio_plat *plat = dev_get_plat(dev);
 	int func;
 
 	func = sunxi_gpio_get_cfgbank(plat->regs, offset);
@@ -260,7 +260,7 @@
 
 static int gpio_sunxi_probe(struct udevice *dev)
 {
-	struct sunxi_gpio_platdata *plat = dev_get_plat(dev);
+	struct sunxi_gpio_plat *plat = dev_get_plat(dev);
 	struct gpio_dev_priv *uc_priv = dev_get_uclass_priv(dev);
 
 	/* Tell the uclass how many GPIOs we have */
@@ -285,7 +285,7 @@
 {
 	struct sunxi_gpio_soc_data *soc_data =
 		(struct sunxi_gpio_soc_data *)dev_get_driver_data(parent);
-	struct sunxi_gpio_platdata *plat = parent->plat;
+	struct sunxi_gpio_plat *plat = parent->plat;
 	struct sunxi_gpio_reg *ctlr;
 	int bank, ret;
 
@@ -295,7 +295,7 @@
 
 	ctlr = dev_read_addr_ptr(parent);
 	for (bank = 0; bank < soc_data->no_banks; bank++) {
-		struct sunxi_gpio_platdata *plat;
+		struct sunxi_gpio_plat *plat;
 		struct udevice *dev;
 
 		plat = calloc(1, sizeof(*plat));
diff --git a/drivers/gpio/tegra186_gpio.c b/drivers/gpio/tegra186_gpio.c
index 14c9d90..cd1fb65 100644
--- a/drivers/gpio/tegra186_gpio.c
+++ b/drivers/gpio/tegra186_gpio.c
@@ -26,7 +26,7 @@
 	uint32_t port_count;
 };
 
-struct tegra186_gpio_platdata {
+struct tegra186_gpio_plat {
 	const char *name;
 	uint32_t *regs;
 };
@@ -34,7 +34,7 @@
 static uint32_t *tegra186_gpio_reg(struct udevice *dev, uint32_t reg,
 				   uint32_t gpio)
 {
-	struct tegra186_gpio_platdata *plat = dev->plat;
+	struct tegra186_gpio_plat *plat = dev->plat;
 	uint32_t index = (reg + (gpio * TEGRA186_GPIO_PER_GPIO_STRIDE)) / 4;
 
 	return &(plat->regs[index]);
@@ -166,7 +166,7 @@
  */
 static int tegra186_gpio_bind(struct udevice *parent)
 {
-	struct tegra186_gpio_platdata *parent_plat = parent->plat;
+	struct tegra186_gpio_plat *parent_plat = parent->plat;
 	struct tegra186_gpio_ctlr_data *ctlr_data =
 		(struct tegra186_gpio_ctlr_data *)dev_get_driver_data(parent);
 	uint32_t *regs;
@@ -181,7 +181,7 @@
 		return -EINVAL;
 
 	for (port = 0; port < ctlr_data->port_count; port++) {
-		struct tegra186_gpio_platdata *plat;
+		struct tegra186_gpio_plat *plat;
 		struct udevice *dev;
 
 		plat = calloc(1, sizeof(*plat));
@@ -201,7 +201,7 @@
 
 static int tegra186_gpio_probe(struct udevice *dev)
 {
-	struct tegra186_gpio_platdata *plat = dev->plat;
+	struct tegra186_gpio_plat *plat = dev->plat;
 	struct gpio_dev_priv *uc_priv = dev_get_uclass_priv(dev);
 
 	/* Only child devices have ports */
diff --git a/drivers/gpio/tegra_gpio.c b/drivers/gpio/tegra_gpio.c
index 862a63f..c489796 100644
--- a/drivers/gpio/tegra_gpio.c
+++ b/drivers/gpio/tegra_gpio.c
@@ -28,7 +28,7 @@
 static const int DIRECTION_INPUT = 0;
 static const int DIRECTION_OUTPUT = 1;
 
-struct tegra_gpio_platdata {
+struct tegra_gpio_plat {
 	struct gpio_ctlr_bank *bank;
 	const char *port_name;	/* Name of port, e.g. "B" */
 	int base_gpio;		/* Port number for this port (0, 1,.., n-1) */
@@ -292,7 +292,7 @@
 {
 	struct gpio_dev_priv *uc_priv = dev_get_uclass_priv(dev);
 	struct tegra_port_info *priv = dev->priv;
-	struct tegra_gpio_platdata *plat = dev->plat;
+	struct tegra_gpio_plat *plat = dev->plat;
 
 	/* Only child devices have ports */
 	if (!plat)
@@ -313,7 +313,7 @@
  */
 static int gpio_tegra_bind(struct udevice *parent)
 {
-	struct tegra_gpio_platdata *plat = parent->plat;
+	struct tegra_gpio_plat *plat = parent->plat;
 	struct gpio_ctlr *ctlr;
 	int bank_count;
 	int bank;
@@ -348,7 +348,7 @@
 		int port;
 
 		for (port = 0; port < TEGRA_PORTS_PER_BANK; port++) {
-			struct tegra_gpio_platdata *plat;
+			struct tegra_gpio_plat *plat;
 			struct udevice *dev;
 			int base_port;
 
diff --git a/drivers/gpio/vybrid_gpio.c b/drivers/gpio/vybrid_gpio.c
index 9133e59..91c0308 100644
--- a/drivers/gpio/vybrid_gpio.c
+++ b/drivers/gpio/vybrid_gpio.c
@@ -93,7 +93,7 @@
 static int vybrid_gpio_probe(struct udevice *dev)
 {
 	struct vybrid_gpios *gpios = dev_get_priv(dev);
-	struct vybrid_gpio_platdata *plat = dev_get_plat(dev);
+	struct vybrid_gpio_plat *plat = dev_get_plat(dev);
 	struct gpio_dev_priv *uc_priv = dev_get_uclass_priv(dev);
 
 	uc_priv->bank_name = plat->port_name;
@@ -104,9 +104,9 @@
 	return 0;
 }
 
-static int vybrid_gpio_odata_to_platdata(struct udevice *dev)
+static int vybrid_gpio_odata_to_plat(struct udevice *dev)
 {
-	struct vybrid_gpio_platdata *plat = dev_get_plat(dev);
+	struct vybrid_gpio_plat *plat = dev_get_plat(dev);
 	fdt_addr_t base_addr;
 
 	base_addr = dev_read_addr(dev);
@@ -130,8 +130,8 @@
 	.id	= UCLASS_GPIO,
 	.ops	= &gpio_vybrid_ops,
 	.of_match = vybrid_gpio_ids,
-	.of_to_plat = vybrid_gpio_odata_to_platdata,
+	.of_to_plat = vybrid_gpio_odata_to_plat,
 	.probe	= vybrid_gpio_probe,
 	.priv_auto	= sizeof(struct vybrid_gpios),
-	.plat_auto	= sizeof(struct vybrid_gpio_platdata),
+	.plat_auto	= sizeof(struct vybrid_gpio_plat),
 };
diff --git a/drivers/gpio/xilinx_gpio.c b/drivers/gpio/xilinx_gpio.c
index 7bc758b..510838d 100644
--- a/drivers/gpio/xilinx_gpio.c
+++ b/drivers/gpio/xilinx_gpio.c
@@ -21,7 +21,7 @@
 	u32 gpiodir;
 };
 
-struct xilinx_gpio_platdata {
+struct xilinx_gpio_plat {
 	struct gpio_regs *regs;
 	int bank_max[XILINX_GPIO_MAX_BANK];
 	int bank_input[XILINX_GPIO_MAX_BANK];
@@ -36,7 +36,7 @@
 static int xilinx_gpio_get_bank_pin(unsigned offset, u32 *bank_num,
 				    u32 *bank_pin_num, struct udevice *dev)
 {
-	struct xilinx_gpio_platdata *plat = dev_get_plat(dev);
+	struct xilinx_gpio_plat *plat = dev_get_plat(dev);
 	u32 bank, max_pins;
 	/* the first gpio is 0 not 1 */
 	u32 pin_num = offset;
@@ -59,7 +59,7 @@
 static int xilinx_gpio_set_value(struct udevice *dev, unsigned offset,
 				 int value)
 {
-	struct xilinx_gpio_platdata *plat = dev_get_plat(dev);
+	struct xilinx_gpio_plat *plat = dev_get_plat(dev);
 	struct xilinx_gpio_privdata *priv = dev_get_priv(dev);
 	int val, ret;
 	u32 bank, pin;
@@ -87,7 +87,7 @@
 
 static int xilinx_gpio_get_value(struct udevice *dev, unsigned offset)
 {
-	struct xilinx_gpio_platdata *plat = dev_get_plat(dev);
+	struct xilinx_gpio_plat *plat = dev_get_plat(dev);
 	struct xilinx_gpio_privdata *priv = dev_get_priv(dev);
 	int val, ret;
 	u32 bank, pin;
@@ -114,7 +114,7 @@
 
 static int xilinx_gpio_get_function(struct udevice *dev, unsigned offset)
 {
-	struct xilinx_gpio_platdata *plat = dev_get_plat(dev);
+	struct xilinx_gpio_plat *plat = dev_get_plat(dev);
 	int val, ret;
 	u32 bank, pin;
 
@@ -143,7 +143,7 @@
 static int xilinx_gpio_direction_output(struct udevice *dev, unsigned offset,
 					int value)
 {
-	struct xilinx_gpio_platdata *plat = dev_get_plat(dev);
+	struct xilinx_gpio_plat *plat = dev_get_plat(dev);
 	int val, ret;
 	u32 bank, pin;
 
@@ -168,7 +168,7 @@
 
 static int xilinx_gpio_direction_input(struct udevice *dev, unsigned offset)
 {
-	struct xilinx_gpio_platdata *plat = dev_get_plat(dev);
+	struct xilinx_gpio_plat *plat = dev_get_plat(dev);
 	int val, ret;
 	u32 bank, pin;
 
@@ -194,7 +194,7 @@
 static int xilinx_gpio_xlate(struct udevice *dev, struct gpio_desc *desc,
 			     struct ofnode_phandle_args *args)
 {
-	struct xilinx_gpio_platdata *plat = dev_get_plat(dev);
+	struct xilinx_gpio_plat *plat = dev_get_plat(dev);
 
 	desc->offset = args->args[0];
 
@@ -239,7 +239,7 @@
 
 static int xilinx_gpio_probe(struct udevice *dev)
 {
-	struct xilinx_gpio_platdata *plat = dev_get_plat(dev);
+	struct xilinx_gpio_plat *plat = dev_get_plat(dev);
 	struct xilinx_gpio_privdata *priv = dev_get_priv(dev);
 	struct gpio_dev_priv *uc_priv = dev_get_uclass_priv(dev);
 	const void *label_ptr;
@@ -265,7 +265,7 @@
 
 static int xilinx_gpio_of_to_plat(struct udevice *dev)
 {
-	struct xilinx_gpio_platdata *plat = dev_get_plat(dev);
+	struct xilinx_gpio_plat *plat = dev_get_plat(dev);
 	int is_dual;
 
 	plat->regs = (struct gpio_regs *)dev_read_addr(dev);
@@ -303,6 +303,6 @@
 	.of_match = xilinx_gpio_ids,
 	.of_to_plat = xilinx_gpio_of_to_plat,
 	.probe = xilinx_gpio_probe,
-	.plat_auto	= sizeof(struct xilinx_gpio_platdata),
+	.plat_auto	= sizeof(struct xilinx_gpio_plat),
 	.priv_auto	= sizeof(struct xilinx_gpio_privdata),
 };
diff --git a/drivers/gpio/zynq_gpio.c b/drivers/gpio/zynq_gpio.c
index ffbe7b4..71a5612 100644
--- a/drivers/gpio/zynq_gpio.c
+++ b/drivers/gpio/zynq_gpio.c
@@ -97,7 +97,7 @@
 #define PMC_GPIO_NR_GPIOS	116
 #define PMC_GPIO_MAX_BANK	5
 
-struct zynq_gpio_platdata {
+struct zynq_gpio_plat {
 	phys_addr_t base;
 	const struct zynq_platform_data *p_data;
 };
@@ -193,7 +193,7 @@
 					  unsigned int *bank_pin_num,
 					  struct udevice *dev)
 {
-	struct zynq_gpio_platdata *plat = dev_get_plat(dev);
+	struct zynq_gpio_plat *plat = dev_get_plat(dev);
 	u32 bank;
 
 	for (bank = 0; bank < plat->p_data->max_bank; bank++) {
@@ -215,7 +215,7 @@
 
 static int gpio_is_valid(unsigned gpio, struct udevice *dev)
 {
-	struct zynq_gpio_platdata *plat = dev_get_plat(dev);
+	struct zynq_gpio_plat *plat = dev_get_plat(dev);
 
 	return gpio < plat->p_data->ngpio;
 }
@@ -233,7 +233,7 @@
 {
 	u32 data;
 	unsigned int bank_num, bank_pin_num;
-	struct zynq_gpio_platdata *plat = dev_get_plat(dev);
+	struct zynq_gpio_plat *plat = dev_get_plat(dev);
 
 	if (check_gpio(gpio, dev) < 0)
 		return -1;
@@ -249,7 +249,7 @@
 static int zynq_gpio_set_value(struct udevice *dev, unsigned gpio, int value)
 {
 	unsigned int reg_offset, bank_num, bank_pin_num;
-	struct zynq_gpio_platdata *plat = dev_get_plat(dev);
+	struct zynq_gpio_plat *plat = dev_get_plat(dev);
 
 	if (check_gpio(gpio, dev) < 0)
 		return -1;
@@ -281,7 +281,7 @@
 {
 	u32 reg;
 	unsigned int bank_num, bank_pin_num;
-	struct zynq_gpio_platdata *plat = dev_get_plat(dev);
+	struct zynq_gpio_plat *plat = dev_get_plat(dev);
 
 	if (check_gpio(gpio, dev) < 0)
 		return -1;
@@ -305,7 +305,7 @@
 {
 	u32 reg;
 	unsigned int bank_num, bank_pin_num;
-	struct zynq_gpio_platdata *plat = dev_get_plat(dev);
+	struct zynq_gpio_plat *plat = dev_get_plat(dev);
 
 	if (check_gpio(gpio, dev) < 0)
 		return -1;
@@ -331,7 +331,7 @@
 {
 	u32 reg;
 	unsigned int bank_num, bank_pin_num;
-	struct zynq_gpio_platdata *plat = dev_get_plat(dev);
+	struct zynq_gpio_plat *plat = dev_get_plat(dev);
 
 	if (check_gpio(offset, dev) < 0)
 		return -1;
@@ -369,7 +369,7 @@
 
 static int zynq_gpio_probe(struct udevice *dev)
 {
-	struct zynq_gpio_platdata *plat = dev_get_plat(dev);
+	struct zynq_gpio_plat *plat = dev_get_plat(dev);
 	struct gpio_dev_priv *uc_priv = dev_get_uclass_priv(dev);
 	const void *label_ptr;
 
@@ -390,7 +390,7 @@
 
 static int zynq_gpio_of_to_plat(struct udevice *dev)
 {
-	struct zynq_gpio_platdata *plat = dev_get_plat(dev);
+	struct zynq_gpio_plat *plat = dev_get_plat(dev);
 
 	plat->base = (phys_addr_t)dev_read_addr(dev);
 
@@ -407,5 +407,5 @@
 	.of_match = zynq_gpio_ids,
 	.of_to_plat = zynq_gpio_of_to_plat,
 	.probe	= zynq_gpio_probe,
-	.plat_auto	= sizeof(struct zynq_gpio_platdata),
+	.plat_auto	= sizeof(struct zynq_gpio_plat),
 };
diff --git a/drivers/i2c/i2c-emul-uclass.c b/drivers/i2c/i2c-emul-uclass.c
index 4fbf20e..085b824 100644
--- a/drivers/i2c/i2c-emul-uclass.c
+++ b/drivers/i2c/i2c-emul-uclass.c
@@ -14,7 +14,7 @@
  * i2c emulation works using an 'emul' node at the bus level. Each device in
  * that node is in the UCLASS_I2C_EMUL uclass, and emulates one i2c device. A
  * pointer to the device it emulates is in the 'dev' property of the emul device
- * uclass plat (struct i2c_emul_platdata), put there by i2c_emul_find().
+ * uclass plat (struct i2c_emul_plat), put there by i2c_emul_find().
  * When sandbox wants an emulator for a device, it calls i2c_emul_find() which
  * searches for the emulator with the correct address. To find the device for an
  * emulator, call i2c_emul_get_device().
@@ -24,27 +24,27 @@
  */
 
 /**
- * struct i2c_emul_uc_platdata - information about the emulator for this device
+ * struct i2c_emul_uc_plat - information about the emulator for this device
  *
  * This is used by devices in UCLASS_I2C_EMUL to record information about the
  * device being emulated. It is accessible with dev_get_uclass_plat()
  *
  * @dev: Device being emulated
  */
-struct i2c_emul_uc_platdata {
+struct i2c_emul_uc_plat {
 	struct udevice *dev;
 };
 
 struct udevice *i2c_emul_get_device(struct udevice *emul)
 {
-	struct i2c_emul_uc_platdata *uc_plat = dev_get_uclass_plat(emul);
+	struct i2c_emul_uc_plat *uc_plat = dev_get_uclass_plat(emul);
 
 	return uc_plat->dev;
 }
 
 int i2c_emul_find(struct udevice *dev, struct udevice **emulp)
 {
-	struct i2c_emul_uc_platdata *uc_plat;
+	struct i2c_emul_uc_plat *uc_plat;
 	struct udevice *emul;
 	int ret;
 
@@ -64,7 +64,7 @@
 UCLASS_DRIVER(i2c_emul) = {
 	.id		= UCLASS_I2C_EMUL,
 	.name		= "i2c_emul",
-	.per_device_plat_auto	= sizeof(struct i2c_emul_uc_platdata),
+	.per_device_plat_auto	= sizeof(struct i2c_emul_uc_plat),
 };
 
 /*
diff --git a/drivers/i2c/omap24xx_i2c.c b/drivers/i2c/omap24xx_i2c.c
index 322d721..1355dc2 100644
--- a/drivers/i2c/omap24xx_i2c.c
+++ b/drivers/i2c/omap24xx_i2c.c
@@ -1049,7 +1049,7 @@
 static int omap_i2c_probe(struct udevice *bus)
 {
 	struct omap_i2c *priv = dev_get_priv(bus);
-	struct omap_i2c_platdata *plat = dev_get_plat(bus);
+	struct omap_i2c_plat *plat = dev_get_plat(bus);
 
 	priv->speed = plat->speed;
 	priv->regs = map_physmem(plat->base, sizeof(void *),
@@ -1065,7 +1065,7 @@
 #if CONFIG_IS_ENABLED(OF_CONTROL) && !CONFIG_IS_ENABLED(OF_PLATDATA)
 static int omap_i2c_of_to_plat(struct udevice *bus)
 {
-	struct omap_i2c_platdata *plat = dev_get_plat(bus);
+	struct omap_i2c_plat *plat = dev_get_plat(bus);
 
 	plat->base = dev_read_addr(bus);
 	plat->speed = dev_read_u32_default(bus, "clock-frequency",
@@ -1094,7 +1094,7 @@
 #if CONFIG_IS_ENABLED(OF_CONTROL) && !CONFIG_IS_ENABLED(OF_PLATDATA)
 	.of_match = omap_i2c_ids,
 	.of_to_plat = omap_i2c_of_to_plat,
-	.plat_auto	= sizeof(struct omap_i2c_platdata),
+	.plat_auto	= sizeof(struct omap_i2c_plat),
 #endif
 	.probe	= omap_i2c_probe,
 	.priv_auto	= sizeof(struct omap_i2c),
diff --git a/drivers/led/led_cortina.c b/drivers/led/led_cortina.c
index 971bbcf..598c0a0 100644
--- a/drivers/led/led_cortina.c
+++ b/drivers/led/led_cortina.c
@@ -57,7 +57,7 @@
 };
 
 /* LED_control structures */
-struct cortina_led_platdata {
+struct cortina_led_plat {
 	void __iomem *ctrl_regs;
 	u16 rate1;	/* blink rate setting 0 */
 	u16 rate2;	/* blink rate setting 1 */
@@ -136,7 +136,7 @@
 
 	/* Top-level LED node */
 	if (!uc_plat->label) {
-		struct cortina_led_platdata *plt = dev_get_plat(dev);
+		struct cortina_led_plat *plt = dev_get_plat(dev);
 
 		plt->rate1 =
 			dev_read_u32_default(dev, "Cortina,blink-rate1", 256);
@@ -169,7 +169,7 @@
 
 	/* Top-level LED node */
 	if (!uc_plat->label) {
-		struct cortina_led_platdata *plat = dev_get_plat(dev);
+		struct cortina_led_plat *plat = dev_get_plat(dev);
 		u32 reg_value, val;
 		u16 rate1, rate2;
 
@@ -292,7 +292,7 @@
 	.of_to_plat = ca_led_of_to_plat,
 	.bind = cortina_led_bind,
 	.probe = cortina_led_probe,
-	.plat_auto	= sizeof(struct cortina_led_platdata),
+	.plat_auto	= sizeof(struct cortina_led_plat),
 	.priv_auto	= sizeof(struct cortina_led_cfg),
 	.ops = &cortina_led_ops,
 };
diff --git a/drivers/misc/altera_sysid.c b/drivers/misc/altera_sysid.c
index 091f055..057b431 100644
--- a/drivers/misc/altera_sysid.c
+++ b/drivers/misc/altera_sysid.c
@@ -17,7 +17,7 @@
 	u32	timestamp;	/* Timestamp */
 };
 
-struct altera_sysid_platdata {
+struct altera_sysid_plat {
 	struct altera_sysid_regs *regs;
 };
 
@@ -59,7 +59,7 @@
 static int altera_sysid_read(struct udevice *dev,
 			     int offset, void *buf, int size)
 {
-	struct altera_sysid_platdata *plat = dev->plat;
+	struct altera_sysid_plat *plat = dev->plat;
 	struct altera_sysid_regs *const regs = plat->regs;
 	u32 *sysid = buf;
 
@@ -71,7 +71,7 @@
 
 static int altera_sysid_of_to_plat(struct udevice *dev)
 {
-	struct altera_sysid_platdata *plat = dev_get_plat(dev);
+	struct altera_sysid_plat *plat = dev_get_plat(dev);
 
 	plat->regs = map_physmem(dev_read_addr(dev),
 				 sizeof(struct altera_sysid_regs),
@@ -94,6 +94,6 @@
 	.id	= UCLASS_MISC,
 	.of_match = altera_sysid_ids,
 	.of_to_plat = altera_sysid_of_to_plat,
-	.plat_auto	= sizeof(struct altera_sysid_platdata),
+	.plat_auto	= sizeof(struct altera_sysid_plat),
 	.ops	= &altera_sysid_ops,
 };
diff --git a/drivers/misc/fs_loader.c b/drivers/misc/fs_loader.c
index c228e84..5ed8ab6 100644
--- a/drivers/misc/fs_loader.c
+++ b/drivers/misc/fs_loader.c
@@ -61,7 +61,7 @@
 }
 #endif
 
-static int select_fs_dev(struct device_platdata *plat)
+static int select_fs_dev(struct device_plat *plat)
 {
 	int ret;
 
@@ -226,7 +226,7 @@
 	ofnode fs_loader_node = dev_ofnode(dev);
 
 	if (ofnode_valid(fs_loader_node)) {
-		struct device_platdata *plat;
+		struct device_plat *plat;
 
 		plat = dev->plat;
 		if (!ofnode_read_u32_array(fs_loader_node,
@@ -250,7 +250,7 @@
 {
 #if CONFIG_IS_ENABLED(DM) && CONFIG_IS_ENABLED(BLK)
 	int ret;
-	struct device_platdata *plat = dev->plat;
+	struct device_plat *plat = dev->plat;
 
 	if (plat->phandlepart.phandle) {
 		ofnode node = ofnode_get_by_phandle(plat->phandlepart.phandle);
@@ -285,7 +285,7 @@
 	.of_match		= fs_loader_ids,
 	.probe			= fs_loader_probe,
 	.of_to_plat	= fs_loader_of_to_plat,
-	.plat_auto	= sizeof(struct device_platdata),
+	.plat_auto	= sizeof(struct device_plat),
 	.priv_auto	= sizeof(struct firmware),
 };
 
diff --git a/drivers/misc/microchip_flexcom.c b/drivers/misc/microchip_flexcom.c
index d0ef2ef..e0a6f2d 100644
--- a/drivers/misc/microchip_flexcom.c
+++ b/drivers/misc/microchip_flexcom.c
@@ -16,14 +16,14 @@
 	u32 cr;
 };
 
-struct microchip_flexcom_platdata {
+struct microchip_flexcom_plat {
 	struct microchip_flexcom_regs *regs;
 	u32 flexcom_mode;
 };
 
 static int microchip_flexcom_of_to_plat(struct udevice *dev)
 {
-	struct microchip_flexcom_platdata *plat = dev_get_plat(dev);
+	struct microchip_flexcom_plat *plat = dev_get_plat(dev);
 	int ret;
 
 	plat->regs = map_physmem(dev_read_addr(dev),
@@ -62,5 +62,5 @@
 	.id	= UCLASS_MISC,
 	.of_match = microchip_flexcom_ids,
 	.of_to_plat = microchip_flexcom_of_to_plat,
-	.plat_auto	= sizeof(struct microchip_flexcom_platdata),
+	.plat_auto	= sizeof(struct microchip_flexcom_plat),
 };
diff --git a/drivers/misc/p2sb-uclass.c b/drivers/misc/p2sb-uclass.c
index 3267e50..8f9ec02 100644
--- a/drivers/misc/p2sb-uclass.c
+++ b/drivers/misc/p2sb-uclass.c
@@ -30,7 +30,7 @@
 
 void *pcr_reg_address(struct udevice *dev, uint offset)
 {
-	struct p2sb_child_platdata *pplat = dev_get_parent_plat(dev);
+	struct p2sb_child_plat *pplat = dev_get_parent_plat(dev);
 	struct udevice *p2sb = dev_get_parent(dev);
 	struct p2sb_uc_priv *upriv = dev_get_uclass_priv(p2sb);
 	uintptr_t reg_addr;
@@ -161,7 +161,7 @@
 
 int p2sb_get_port_id(struct udevice *dev)
 {
-	struct p2sb_child_platdata *pplat = dev_get_parent_plat(dev);
+	struct p2sb_child_plat *pplat = dev_get_parent_plat(dev);
 
 	return pplat->pid;
 }
@@ -169,7 +169,7 @@
 int p2sb_set_port_id(struct udevice *dev, int portid)
 {
 	struct udevice *ps2b;
-	struct p2sb_child_platdata *pplat;
+	struct p2sb_child_plat *pplat;
 
 	if (!CONFIG_IS_ENABLED(OF_PLATDATA))
 		return -ENOSYS;
@@ -197,7 +197,7 @@
 static int p2sb_child_post_bind(struct udevice *dev)
 {
 #if !CONFIG_IS_ENABLED(OF_PLATDATA)
-	struct p2sb_child_platdata *pplat = dev_get_parent_plat(dev);
+	struct p2sb_child_plat *pplat = dev_get_parent_plat(dev);
 	int ret;
 	u32 pid;
 
@@ -224,5 +224,5 @@
 	.per_device_auto	= sizeof(struct p2sb_uc_priv),
 	.post_bind	= p2sb_post_bind,
 	.child_post_bind = p2sb_child_post_bind,
-	.per_child_plat_auto = sizeof(struct p2sb_child_platdata),
+	.per_child_plat_auto = sizeof(struct p2sb_child_plat),
 };
diff --git a/drivers/misc/p2sb_emul.c b/drivers/misc/p2sb_emul.c
index 5c70ca8..973d02d 100644
--- a/drivers/misc/p2sb_emul.c
+++ b/drivers/misc/p2sb_emul.c
@@ -18,12 +18,12 @@
 #include <p2sb.h>
 
 /**
- * struct p2sb_emul_platdata - platform data for this device
+ * struct p2sb_emul_plat - platform data for this device
  *
  * @command:	Current PCI command value
  * @bar:	Current base address values
  */
-struct p2sb_emul_platdata {
+struct p2sb_emul_plat {
 	u16 command;
 	u32 bar[6];
 };
@@ -53,7 +53,7 @@
 					 uint offset, ulong *valuep,
 					 enum pci_size_t size)
 {
-	struct p2sb_emul_platdata *plat = dev_get_plat(emul);
+	struct p2sb_emul_plat *plat = dev_get_plat(emul);
 
 	switch (offset) {
 	case PCI_COMMAND:
@@ -106,7 +106,7 @@
 static int sandbox_p2sb_emul_write_config(struct udevice *emul, uint offset,
 					  ulong value, enum pci_size_t size)
 {
-	struct p2sb_emul_platdata *plat = dev_get_plat(emul);
+	struct p2sb_emul_plat *plat = dev_get_plat(emul);
 
 	switch (offset) {
 	case PCI_COMMAND:
@@ -134,7 +134,7 @@
 static int sandbox_p2sb_emul_find_bar(struct udevice *emul, unsigned int addr,
 				      int *barnump, unsigned int *offsetp)
 {
-	struct p2sb_emul_platdata *plat = dev_get_plat(emul);
+	struct p2sb_emul_plat *plat = dev_get_plat(emul);
 	int barnum;
 
 	for (barnum = 0; barnum < ARRAY_SIZE(barinfo); barnum++) {
@@ -197,7 +197,7 @@
 		return log_msg_ret("No client", ret);
 
 	device_foreach_child(dev, p2sb) {
-		struct p2sb_child_platdata *pplat =
+		struct p2sb_child_plat *pplat =
 			 dev_get_parent_plat(dev);
 
 		log_debug("   - child %s, pid %d, want %d\n", dev->name,
@@ -263,7 +263,7 @@
 	.of_match	= sandbox_p2sb_emul_ids,
 	.ops		= &sandbox_p2sb_emul_emul_ops,
 	.priv_auto	= sizeof(struct p2sb_emul_priv),
-	.plat_auto	= sizeof(struct p2sb_emul_platdata),
+	.plat_auto	= sizeof(struct p2sb_emul_plat),
 };
 
 static struct pci_device_id sandbox_p2sb_emul_supported[] = {
diff --git a/drivers/misc/rockchip-efuse.c b/drivers/misc/rockchip-efuse.c
index 08e30ba..be25389 100644
--- a/drivers/misc/rockchip-efuse.c
+++ b/drivers/misc/rockchip-efuse.c
@@ -37,7 +37,7 @@
 		       /* 0x14	efuse strobe finish control register */
 };
 
-struct rockchip_efuse_platdata {
+struct rockchip_efuse_plat {
 	void __iomem *base;
 	struct clk *clk;
 };
@@ -86,7 +86,7 @@
 static int rockchip_rk3399_efuse_read(struct udevice *dev, int offset,
 				      void *buf, int size)
 {
-	struct rockchip_efuse_platdata *plat = dev_get_plat(dev);
+	struct rockchip_efuse_plat *plat = dev_get_plat(dev);
 	struct rockchip_efuse_regs *efuse =
 		(struct rockchip_efuse_regs *)plat->base;
 
@@ -139,7 +139,7 @@
 
 static int rockchip_efuse_of_to_plat(struct udevice *dev)
 {
-	struct rockchip_efuse_platdata *plat = dev_get_plat(dev);
+	struct rockchip_efuse_plat *plat = dev_get_plat(dev);
 
 	plat->base = dev_read_addr_ptr(dev);
 	return 0;
@@ -155,6 +155,6 @@
 	.id = UCLASS_MISC,
 	.of_match = rockchip_efuse_ids,
 	.of_to_plat = rockchip_efuse_of_to_plat,
-	.plat_auto	= sizeof(struct rockchip_efuse_platdata),
+	.plat_auto	= sizeof(struct rockchip_efuse_plat),
 	.ops = &rockchip_efuse_ops,
 };
diff --git a/drivers/misc/rockchip-otp.c b/drivers/misc/rockchip-otp.c
index 9707750..cc9a545 100644
--- a/drivers/misc/rockchip-otp.c
+++ b/drivers/misc/rockchip-otp.c
@@ -47,13 +47,13 @@
 
 #define OTPC_TIMEOUT			10000
 
-struct rockchip_otp_platdata {
+struct rockchip_otp_plat {
 	void __iomem *base;
 	unsigned long secure_conf_base;
 	unsigned long otp_mask_base;
 };
 
-static int rockchip_otp_wait_status(struct rockchip_otp_platdata *otp,
+static int rockchip_otp_wait_status(struct rockchip_otp_plat *otp,
 				    u32 flag)
 {
 	int delay = OTPC_TIMEOUT;
@@ -73,7 +73,7 @@
 	return 0;
 }
 
-static int rockchip_otp_ecc_enable(struct rockchip_otp_platdata *otp,
+static int rockchip_otp_ecc_enable(struct rockchip_otp_plat *otp,
 				   bool enable)
 {
 	int ret = 0;
@@ -102,7 +102,7 @@
 static int rockchip_px30_otp_read(struct udevice *dev, int offset,
 				  void *buf, int size)
 {
-	struct rockchip_otp_platdata *otp = dev_get_plat(dev);
+	struct rockchip_otp_plat *otp = dev_get_plat(dev);
 	u8 *buffer = buf;
 	int ret = 0;
 
@@ -147,7 +147,7 @@
 
 static int rockchip_otp_of_to_plat(struct udevice *dev)
 {
-	struct rockchip_otp_platdata *otp = dev_get_plat(dev);
+	struct rockchip_otp_plat *otp = dev_get_plat(dev);
 
 	otp->base = dev_read_addr_ptr(dev);
 
@@ -172,5 +172,5 @@
 	.of_match = rockchip_otp_ids,
 	.ops = &rockchip_otp_ops,
 	.of_to_plat = rockchip_otp_of_to_plat,
-	.plat_auto	= sizeof(struct rockchip_otp_platdata),
+	.plat_auto	= sizeof(struct rockchip_otp_plat),
 };
diff --git a/drivers/misc/sandbox_adder.c b/drivers/misc/sandbox_adder.c
index 94eaf23..3ea33e4 100644
--- a/drivers/misc/sandbox_adder.c
+++ b/drivers/misc/sandbox_adder.c
@@ -21,7 +21,7 @@
 int sandbox_adder_read(struct udevice *dev, ulong address, void *data,
 		       enum axi_size_t size)
 {
-	struct p2sb_child_platdata *pplat = dev_get_parent_plat(dev);
+	struct p2sb_child_plat *pplat = dev_get_parent_plat(dev);
 	u32 *val = data;
 
 	*val = pplat->pid << 24 | address;
diff --git a/drivers/misc/sifive-otp.c b/drivers/misc/sifive-otp.c
index e1f5971..3e658b3 100644
--- a/drivers/misc/sifive-otp.c
+++ b/drivers/misc/sifive-otp.c
@@ -89,7 +89,7 @@
 	u32 pwe;    /* Write enable input (defines program cycle) */
 };
 
-struct sifive_otp_platdata {
+struct sifive_otp_plat {
 	struct sifive_otp_regs __iomem *regs;
 	u32 total_fuses;
 };
@@ -100,7 +100,7 @@
 static int sifive_otp_read(struct udevice *dev, int offset,
 			   void *buf, int size)
 {
-	struct sifive_otp_platdata *plat = dev_get_plat(dev);
+	struct sifive_otp_plat *plat = dev_get_plat(dev);
 	struct sifive_otp_regs *regs = (struct sifive_otp_regs *)plat->regs;
 
 	/* Check if offset and size are multiple of BYTES_PER_FUSE */
@@ -162,7 +162,7 @@
 static int sifive_otp_write(struct udevice *dev, int offset,
 			    const void *buf, int size)
 {
-	struct sifive_otp_platdata *plat = dev_get_plat(dev);
+	struct sifive_otp_plat *plat = dev_get_plat(dev);
 	struct sifive_otp_regs *regs = (struct sifive_otp_regs *)plat->regs;
 
 	/* Check if offset and size are multiple of BYTES_PER_FUSE */
@@ -241,7 +241,7 @@
 
 static int sifive_otp_of_to_plat(struct udevice *dev)
 {
-	struct sifive_otp_platdata *plat = dev_get_plat(dev);
+	struct sifive_otp_plat *plat = dev_get_plat(dev);
 	int ret;
 
 	plat->regs = dev_read_addr_ptr(dev);
@@ -270,6 +270,6 @@
 	.id = UCLASS_MISC,
 	.of_match = sifive_otp_ids,
 	.of_to_plat = sifive_otp_of_to_plat,
-	.plat_auto	= sizeof(struct sifive_otp_platdata),
+	.plat_auto	= sizeof(struct sifive_otp_plat),
 	.ops = &sifive_otp_ops,
 };
diff --git a/drivers/misc/swap_case.c b/drivers/misc/swap_case.c
index 9dd3b06..abea0e7 100644
--- a/drivers/misc/swap_case.c
+++ b/drivers/misc/swap_case.c
@@ -15,12 +15,12 @@
 #include <linux/ctype.h>
 
 /**
- * struct swap_case_platdata - platform data for this device
+ * struct swap_case_plat - platform data for this device
  *
  * @command:	Current PCI command value
  * @bar:	Current base address values
  */
-struct swap_case_platdata {
+struct swap_case_plat {
 	u16 command;
 	u32 bar[6];
 };
@@ -100,7 +100,7 @@
 					 uint offset, ulong *valuep,
 					 enum pci_size_t size)
 {
-	struct swap_case_platdata *plat = dev_get_plat(emul);
+	struct swap_case_plat *plat = dev_get_plat(emul);
 
 	/*
 	 * The content of the EA capability structure is handled elsewhere to
@@ -200,7 +200,7 @@
 static int sandbox_swap_case_write_config(struct udevice *emul, uint offset,
 					  ulong value, enum pci_size_t size)
 {
-	struct swap_case_platdata *plat = dev_get_plat(emul);
+	struct swap_case_plat *plat = dev_get_plat(emul);
 
 	switch (offset) {
 	case PCI_COMMAND:
@@ -228,7 +228,7 @@
 static int sandbox_swap_case_find_bar(struct udevice *emul, unsigned int addr,
 				      int *barnump, unsigned int *offsetp)
 {
-	struct swap_case_platdata *plat = dev_get_plat(emul);
+	struct swap_case_plat *plat = dev_get_plat(emul);
 	int barnum;
 
 	for (barnum = 0; barnum < ARRAY_SIZE(barinfo); barnum++) {
@@ -392,7 +392,7 @@
 	.of_match	= sandbox_swap_case_ids,
 	.ops		= &sandbox_swap_case_emul_ops,
 	.priv_auto	= sizeof(struct swap_case_priv),
-	.plat_auto	= sizeof(struct swap_case_platdata),
+	.plat_auto	= sizeof(struct swap_case_plat),
 };
 
 static struct pci_device_id sandbox_swap_case_supported[] = {
diff --git a/drivers/mmc/meson_gx_mmc.c b/drivers/mmc/meson_gx_mmc.c
index 518e24e..8b6dfa3 100644
--- a/drivers/mmc/meson_gx_mmc.c
+++ b/drivers/mmc/meson_gx_mmc.c
@@ -27,7 +27,7 @@
 
 static inline void *get_regbase(const struct mmc *mmc)
 {
-	struct meson_mmc_platdata *pdata = mmc->priv;
+	struct meson_mmc_plat *pdata = mmc->priv;
 
 	return pdata->regbase;
 }
@@ -160,7 +160,7 @@
 
 static void meson_mmc_setup_addr(struct mmc *mmc, struct mmc_data *data)
 {
-	struct meson_mmc_platdata *pdata = mmc->priv;
+	struct meson_mmc_plat *pdata = mmc->priv;
 	unsigned int data_size;
 	uint32_t data_addr = 0;
 
@@ -198,7 +198,7 @@
 				 struct mmc_data *data)
 {
 	struct mmc *mmc = mmc_get_mmc_dev(dev);
-	struct meson_mmc_platdata *pdata = mmc->priv;
+	struct meson_mmc_plat *pdata = mmc->priv;
 	uint32_t status;
 	ulong start;
 	int ret = 0;
@@ -243,7 +243,7 @@
 
 static int meson_mmc_of_to_plat(struct udevice *dev)
 {
-	struct meson_mmc_platdata *pdata = dev_get_plat(dev);
+	struct meson_mmc_plat *pdata = dev_get_plat(dev);
 	fdt_addr_t addr;
 
 	addr = dev_read_addr(dev);
@@ -257,7 +257,7 @@
 
 static int meson_mmc_probe(struct udevice *dev)
 {
-	struct meson_mmc_platdata *pdata = dev_get_plat(dev);
+	struct meson_mmc_plat *pdata = dev_get_plat(dev);
 	struct mmc_uclass_priv *upriv = dev_get_uclass_priv(dev);
 	struct mmc *mmc = &pdata->mmc;
 	struct mmc_config *cfg = &pdata->cfg;
@@ -320,7 +320,7 @@
 
 int meson_mmc_bind(struct udevice *dev)
 {
-	struct meson_mmc_platdata *pdata = dev_get_plat(dev);
+	struct meson_mmc_plat *pdata = dev_get_plat(dev);
 
 	return mmc_bind(dev, &pdata->mmc, &pdata->cfg);
 }
@@ -340,7 +340,7 @@
 	.probe = meson_mmc_probe,
 	.bind = meson_mmc_bind,
 	.of_to_plat = meson_mmc_of_to_plat,
-	.plat_auto	= sizeof(struct meson_mmc_platdata),
+	.plat_auto	= sizeof(struct meson_mmc_plat),
 };
 
 #ifdef CONFIG_PWRSEQ
diff --git a/drivers/mmc/meson_gx_mmc.h b/drivers/mmc/meson_gx_mmc.h
index 92aec53..8974b78 100644
--- a/drivers/mmc/meson_gx_mmc.h
+++ b/drivers/mmc/meson_gx_mmc.h
@@ -84,7 +84,7 @@
 #define MESON_SD_EMMC_CMD_RSP2		0x64
 #define MESON_SD_EMMC_CMD_RSP3		0x68
 
-struct meson_mmc_platdata {
+struct meson_mmc_plat {
 	struct mmc_config cfg;
 	struct mmc mmc;
 	void *regbase;
diff --git a/drivers/mmc/mxsmmc.c b/drivers/mmc/mxsmmc.c
index c96334f..143818d 100644
--- a/drivers/mmc/mxsmmc.c
+++ b/drivers/mmc/mxsmmc.c
@@ -52,7 +52,7 @@
 #include <dm/read.h>
 #include <dt-structs.h>
 
-struct mxsmmc_platdata {
+struct mxsmmc_plat {
 #if CONFIG_IS_ENABLED(OF_PLATDATA)
 	struct dtd_fsl_imx23_mmc dtplat;
 #endif
@@ -310,7 +310,7 @@
 static int
 mxsmmc_send_cmd(struct udevice *dev, struct mmc_cmd *cmd, struct mmc_data *data)
 {
-	struct mxsmmc_platdata *plat = dev_get_plat(dev);
+	struct mxsmmc_plat *plat = dev_get_plat(dev);
 	struct mxsmmc_priv *priv = dev_get_priv(dev);
 	struct mxs_ssp_regs *ssp_regs = priv->regs;
 	struct mmc *mmc = &plat->mmc;
@@ -490,7 +490,7 @@
 
 static int mxsmmc_get_cd(struct udevice *dev)
 {
-	struct mxsmmc_platdata *plat = dev_get_plat(dev);
+	struct mxsmmc_plat *plat = dev_get_plat(dev);
 	struct mxsmmc_priv *priv = dev_get_priv(dev);
 	struct mxs_ssp_regs *ssp_regs = priv->regs;
 
@@ -502,7 +502,7 @@
 
 static int mxsmmc_set_ios(struct udevice *dev)
 {
-	struct mxsmmc_platdata *plat = dev_get_plat(dev);
+	struct mxsmmc_plat *plat = dev_get_plat(dev);
 	struct mxsmmc_priv *priv = dev_get_priv(dev);
 	struct mxs_ssp_regs *ssp_regs = priv->regs;
 	struct mmc *mmc = &plat->mmc;
@@ -567,7 +567,7 @@
 static int mxsmmc_probe(struct udevice *dev)
 {
 	struct mmc_uclass_priv *upriv = dev_get_uclass_priv(dev);
-	struct mxsmmc_platdata *plat = dev_get_plat(dev);
+	struct mxsmmc_plat *plat = dev_get_plat(dev);
 	struct mxsmmc_priv *priv = dev_get_priv(dev);
 	struct blk_desc *bdesc;
 	struct mmc *mmc;
@@ -653,7 +653,7 @@
 #if CONFIG_IS_ENABLED(BLK)
 static int mxsmmc_bind(struct udevice *dev)
 {
-	struct mxsmmc_platdata *plat = dev_get_plat(dev);
+	struct mxsmmc_plat *plat = dev_get_plat(dev);
 
 	return mmc_bind(dev, &plat->mmc, &plat->cfg);
 }
@@ -668,7 +668,7 @@
 #if CONFIG_IS_ENABLED(OF_CONTROL) && !CONFIG_IS_ENABLED(OF_PLATDATA)
 static int mxsmmc_of_to_plat(struct udevice *bus)
 {
-	struct mxsmmc_platdata *plat = bus->plat;
+	struct mxsmmc_plat *plat = bus->plat;
 	u32 prop[2];
 	int ret;
 
@@ -719,7 +719,7 @@
 #endif
 	.probe	= mxsmmc_probe,
 	.priv_auto	= sizeof(struct mxsmmc_priv),
-	.plat_auto	= sizeof(struct mxsmmc_platdata),
+	.plat_auto	= sizeof(struct mxsmmc_plat),
 };
 
 U_BOOT_DRIVER_ALIAS(fsl_imx23_mmc, fsl_imx28_mmc)
diff --git a/drivers/mtd/altera_qspi.c b/drivers/mtd/altera_qspi.c
index 250fb4f..0011811 100644
--- a/drivers/mtd/altera_qspi.c
+++ b/drivers/mtd/altera_qspi.c
@@ -48,7 +48,7 @@
 	u32	chip_select;
 };
 
-struct altera_qspi_platdata {
+struct altera_qspi_plat {
 	struct altera_qspi_regs *regs;
 	void *base;
 	unsigned long size;
@@ -106,7 +106,7 @@
 {
 	struct mtd_info *mtd = info->mtd;
 	struct udevice *dev = mtd->dev;
-	struct altera_qspi_platdata *pdata = dev_get_plat(dev);
+	struct altera_qspi_plat *pdata = dev_get_plat(dev);
 	ulong base = (ulong)pdata->base;
 	loff_t to = addr - base;
 	size_t retlen;
@@ -135,7 +135,7 @@
 static int altera_qspi_erase(struct mtd_info *mtd, struct erase_info *instr)
 {
 	struct udevice *dev = mtd->dev;
-	struct altera_qspi_platdata *pdata = dev_get_plat(dev);
+	struct altera_qspi_plat *pdata = dev_get_plat(dev);
 	struct altera_qspi_regs *regs = pdata->regs;
 	size_t addr = instr->addr;
 	size_t len = instr->len;
@@ -197,7 +197,7 @@
 			    size_t *retlen, u_char *buf)
 {
 	struct udevice *dev = mtd->dev;
-	struct altera_qspi_platdata *pdata = dev_get_plat(dev);
+	struct altera_qspi_plat *pdata = dev_get_plat(dev);
 
 	memcpy_fromio(buf, pdata->base + from, len);
 	*retlen = len;
@@ -209,7 +209,7 @@
 			     size_t *retlen, const u_char *buf)
 {
 	struct udevice *dev = mtd->dev;
-	struct altera_qspi_platdata *pdata = dev_get_plat(dev);
+	struct altera_qspi_plat *pdata = dev_get_plat(dev);
 	struct altera_qspi_regs *regs = pdata->regs;
 	u32 stat;
 
@@ -235,7 +235,7 @@
 					 uint64_t *len)
 {
 	struct udevice *dev = mtd->dev;
-	struct altera_qspi_platdata *pdata = dev_get_plat(dev);
+	struct altera_qspi_plat *pdata = dev_get_plat(dev);
 	struct altera_qspi_regs *regs = pdata->regs;
 	int shift0 = ffs(QUADSPI_SR_BP2_0) - 1;
 	int shift3 = ffs(QUADSPI_SR_BP3) - 1 - 3;
@@ -257,7 +257,7 @@
 static int altera_qspi_lock(struct mtd_info *mtd, loff_t ofs, uint64_t len)
 {
 	struct udevice *dev = mtd->dev;
-	struct altera_qspi_platdata *pdata = dev_get_plat(dev);
+	struct altera_qspi_plat *pdata = dev_get_plat(dev);
 	struct altera_qspi_regs *regs = pdata->regs;
 	u32 sector_start, sector_end;
 	u32 num_sectors;
@@ -291,7 +291,7 @@
 static int altera_qspi_unlock(struct mtd_info *mtd, loff_t ofs, uint64_t len)
 {
 	struct udevice *dev = mtd->dev;
-	struct altera_qspi_platdata *pdata = dev_get_plat(dev);
+	struct altera_qspi_plat *pdata = dev_get_plat(dev);
 	struct altera_qspi_regs *regs = pdata->regs;
 	u32 mem_op;
 
@@ -304,7 +304,7 @@
 
 static int altera_qspi_probe(struct udevice *dev)
 {
-	struct altera_qspi_platdata *pdata = dev_get_plat(dev);
+	struct altera_qspi_plat *pdata = dev_get_plat(dev);
 	struct altera_qspi_regs *regs = pdata->regs;
 	unsigned long base = (unsigned long)pdata->base;
 	struct mtd_info *mtd;
@@ -348,7 +348,7 @@
 
 static int altera_qspi_of_to_plat(struct udevice *dev)
 {
-	struct altera_qspi_platdata *pdata = dev_get_plat(dev);
+	struct altera_qspi_plat *pdata = dev_get_plat(dev);
 	void *blob = (void *)gd->fdt_blob;
 	int node = dev_of_offset(dev);
 	const char *list, *end;
@@ -401,6 +401,6 @@
 	.id	= UCLASS_MTD,
 	.of_match = altera_qspi_ids,
 	.of_to_plat = altera_qspi_of_to_plat,
-	.plat_auto	= sizeof(struct altera_qspi_platdata),
+	.plat_auto	= sizeof(struct altera_qspi_plat),
 	.probe	= altera_qspi_probe,
 };
diff --git a/drivers/mtd/spi/sandbox.c b/drivers/mtd/spi/sandbox.c
index 5027439..740bd75 100644
--- a/drivers/mtd/spi/sandbox.c
+++ b/drivers/mtd/spi/sandbox.c
@@ -124,7 +124,7 @@
 	const struct flash_info *data;
 	struct sandbox_spi_flash_plat_data *pdata = dev_get_plat(dev);
 	struct sandbox_state *state = state_get_current();
-	struct dm_spi_slave_platdata *slave_plat;
+	struct dm_spi_slave_plat *slave_plat;
 	struct udevice *bus = dev->parent;
 	const char *spec = NULL;
 	struct udevice *emul;
diff --git a/drivers/net/dwmac_socfpga.c b/drivers/net/dwmac_socfpga.c
index 6171dad..939f199 100644
--- a/drivers/net/dwmac_socfpga.c
+++ b/drivers/net/dwmac_socfpga.c
@@ -19,7 +19,7 @@
 
 #include <asm/arch/system_manager.h>
 
-struct dwmac_socfpga_platdata {
+struct dwmac_socfpga_plat {
 	struct dw_eth_pdata	dw_eth_pdata;
 	void			*phy_intf;
 	u32			reg_shift;
@@ -27,7 +27,7 @@
 
 static int dwmac_socfpga_of_to_plat(struct udevice *dev)
 {
-	struct dwmac_socfpga_platdata *pdata = dev_get_plat(dev);
+	struct dwmac_socfpga_plat *pdata = dev_get_plat(dev);
 	struct regmap *regmap;
 	struct ofnode_phandle_args args;
 	void *range;
@@ -66,7 +66,7 @@
 
 static int dwmac_socfpga_probe(struct udevice *dev)
 {
-	struct dwmac_socfpga_platdata *pdata = dev_get_plat(dev);
+	struct dwmac_socfpga_plat *pdata = dev_get_plat(dev);
 	struct eth_pdata *edata = &pdata->dw_eth_pdata.eth_pdata;
 	struct reset_ctl_bulk reset_bulk;
 	int ret;
@@ -119,6 +119,6 @@
 	.probe		= dwmac_socfpga_probe,
 	.ops		= &designware_eth_ops,
 	.priv_auto	= sizeof(struct dw_eth_dev),
-	.plat_auto	= sizeof(struct dwmac_socfpga_platdata),
+	.plat_auto	= sizeof(struct dwmac_socfpga_plat),
 	.flags		= DM_FLAG_ALLOC_PRIV_DMA,
 };
diff --git a/drivers/net/fsl_enetc.c b/drivers/net/fsl_enetc.c
index 765385c..2e684e5 100644
--- a/drivers/net/fsl_enetc.c
+++ b/drivers/net/fsl_enetc.c
@@ -54,7 +54,7 @@
 /* sets up primary MAC addresses in DT/IERB */
 void fdt_fixup_enetc_mac(void *blob)
 {
-	struct pci_child_platdata *ppdata;
+	struct pci_child_plat *ppdata;
 	struct eth_pdata *pdata;
 	struct udevice *dev;
 	struct uclass *uc;
@@ -365,7 +365,7 @@
 
 static int enetc_ls1028a_write_hwaddr(struct udevice *dev)
 {
-	struct pci_child_platdata *ppdata = dev_get_parent_plat(dev);
+	struct pci_child_plat *ppdata = dev_get_parent_plat(dev);
 	const int devfn_to_pf[] = {0, 1, 2, -1, -1, -1, 3};
 	struct eth_pdata *plat = dev_get_plat(dev);
 	int devfn = PCI_FUNC(ppdata->devfn);
diff --git a/drivers/net/gmac_rockchip.c b/drivers/net/gmac_rockchip.c
index 0073cb3..a50a5b3 100644
--- a/drivers/net/gmac_rockchip.c
+++ b/drivers/net/gmac_rockchip.c
@@ -39,7 +39,7 @@
  *
  * dw_eth_pdata: Required platform data for designware driver (must be first)
  */
-struct gmac_rockchip_platdata {
+struct gmac_rockchip_plat {
 	struct dw_eth_pdata dw_eth_pdata;
 	bool clock_input;
 	int tx_delay;
@@ -48,14 +48,14 @@
 
 struct rk_gmac_ops {
 	int (*fix_mac_speed)(struct dw_eth_dev *priv);
-	void (*set_to_rmii)(struct gmac_rockchip_platdata *pdata);
-	void (*set_to_rgmii)(struct gmac_rockchip_platdata *pdata);
+	void (*set_to_rmii)(struct gmac_rockchip_plat *pdata);
+	void (*set_to_rgmii)(struct gmac_rockchip_plat *pdata);
 };
 
 
 static int gmac_rockchip_of_to_plat(struct udevice *dev)
 {
-	struct gmac_rockchip_platdata *pdata = dev_get_plat(dev);
+	struct gmac_rockchip_plat *pdata = dev_get_plat(dev);
 	const char *string;
 
 	string = dev_read_string(dev, "clock_in_out");
@@ -344,7 +344,7 @@
 	return 0;
 }
 
-static void px30_gmac_set_to_rmii(struct gmac_rockchip_platdata *pdata)
+static void px30_gmac_set_to_rmii(struct gmac_rockchip_plat *pdata)
 {
 	struct px30_grf *grf;
 	enum {
@@ -360,7 +360,7 @@
 		     PX30_GMAC_PHY_INTF_SEL_RMII);
 }
 
-static void rk3228_gmac_set_to_rgmii(struct gmac_rockchip_platdata *pdata)
+static void rk3228_gmac_set_to_rgmii(struct gmac_rockchip_plat *pdata)
 {
 	struct rk322x_grf *grf;
 	enum {
@@ -403,7 +403,7 @@
 		     pdata->tx_delay << RK3228_CLK_TX_DL_CFG_GMAC_SHIFT);
 }
 
-static void rk3288_gmac_set_to_rgmii(struct gmac_rockchip_platdata *pdata)
+static void rk3288_gmac_set_to_rgmii(struct gmac_rockchip_plat *pdata)
 {
 	struct rk3288_grf *grf;
 
@@ -422,7 +422,7 @@
 		     pdata->tx_delay << RK3288_CLK_TX_DL_CFG_GMAC_SHIFT);
 }
 
-static void rk3308_gmac_set_to_rmii(struct gmac_rockchip_platdata *pdata)
+static void rk3308_gmac_set_to_rmii(struct gmac_rockchip_plat *pdata)
 {
 	struct rk3308_grf *grf;
 	enum {
@@ -438,7 +438,7 @@
 		     RK3308_GMAC_PHY_INTF_SEL_RMII);
 }
 
-static void rk3328_gmac_set_to_rgmii(struct gmac_rockchip_platdata *pdata)
+static void rk3328_gmac_set_to_rgmii(struct gmac_rockchip_plat *pdata)
 {
 	struct rk3328_grf_regs *grf;
 	enum {
@@ -481,7 +481,7 @@
 		     pdata->tx_delay << RK3328_CLK_TX_DL_CFG_GMAC_SHIFT);
 }
 
-static void rk3368_gmac_set_to_rgmii(struct gmac_rockchip_platdata *pdata)
+static void rk3368_gmac_set_to_rgmii(struct gmac_rockchip_plat *pdata)
 {
 	struct rk3368_grf *grf;
 	enum {
@@ -518,7 +518,7 @@
 		     pdata->tx_delay << RK3368_CLK_TX_DL_CFG_GMAC_SHIFT);
 }
 
-static void rk3399_gmac_set_to_rgmii(struct gmac_rockchip_platdata *pdata)
+static void rk3399_gmac_set_to_rgmii(struct gmac_rockchip_plat *pdata)
 {
 	struct rk3399_grf_regs *grf;
 
@@ -538,7 +538,7 @@
 		     pdata->tx_delay << RK3399_CLK_TX_DL_CFG_GMAC_SHIFT);
 }
 
-static void rv1108_gmac_set_to_rmii(struct gmac_rockchip_platdata *pdata)
+static void rv1108_gmac_set_to_rmii(struct gmac_rockchip_plat *pdata)
 {
 	struct rv1108_grf *grf;
 
@@ -555,7 +555,7 @@
 
 static int gmac_rockchip_probe(struct udevice *dev)
 {
-	struct gmac_rockchip_platdata *pdata = dev_get_plat(dev);
+	struct gmac_rockchip_plat *pdata = dev_get_plat(dev);
 	struct rk_gmac_ops *ops =
 		(struct rk_gmac_ops *)dev_get_driver_data(dev);
 	struct dw_eth_pdata *dw_pdata = dev_get_plat(dev);
@@ -760,6 +760,6 @@
 	.probe	= gmac_rockchip_probe,
 	.ops	= &gmac_rockchip_eth_ops,
 	.priv_auto	= sizeof(struct dw_eth_dev),
-	.plat_auto	= sizeof(struct gmac_rockchip_platdata),
+	.plat_auto	= sizeof(struct gmac_rockchip_plat),
 	.flags = DM_FLAG_ALLOC_PRIV_DMA,
 };
diff --git a/drivers/net/rtl8169.c b/drivers/net/rtl8169.c
index 7aac8a9..da2cfb7 100644
--- a/drivers/net/rtl8169.c
+++ b/drivers/net/rtl8169.c
@@ -1187,7 +1187,7 @@
 #ifdef CONFIG_DM_ETH
 static int rtl8169_eth_probe(struct udevice *dev)
 {
-	struct pci_child_platdata *pplat = dev_get_parent_plat(dev);
+	struct pci_child_plat *pplat = dev_get_parent_plat(dev);
 	struct rtl8169_private *priv = dev_get_priv(dev);
 	struct eth_pdata *plat = dev_get_plat(dev);
 	u32 iobase;
diff --git a/drivers/nvme/nvme.c b/drivers/nvme/nvme.c
index cee3f57..5d6331a 100644
--- a/drivers/nvme/nvme.c
+++ b/drivers/nvme/nvme.c
@@ -676,7 +676,7 @@
 	struct blk_desc *desc = dev_get_uclass_plat(udev);
 	struct nvme_ns *ns = dev_get_priv(udev);
 	u8 flbas;
-	struct pci_child_platdata *pplat;
+	struct pci_child_plat *pplat;
 	struct nvme_id_ns *id;
 
 	id = memalign(ndev->page_size, sizeof(struct nvme_id_ns));
diff --git a/drivers/pci/pci-emul-uclass.c b/drivers/pci/pci-emul-uclass.c
index f71ba42..756d8ad 100644
--- a/drivers/pci/pci-emul-uclass.c
+++ b/drivers/pci/pci-emul-uclass.c
@@ -111,7 +111,7 @@
 
 /*
  * This uclass is a child of the pci bus. Its plat is not defined here so
- * is defined by its parent, UCLASS_PCI, which uses struct pci_child_platdata.
+ * is defined by its parent, UCLASS_PCI, which uses struct pci_child_plat.
  * See per_child_plat_auto	in UCLASS_DRIVER(pci).
  */
 UCLASS_DRIVER(pci_emul_parent) = {
diff --git a/drivers/pci/pci-uclass.c b/drivers/pci/pci-uclass.c
index e46c59b..9fc13e3 100644
--- a/drivers/pci/pci-uclass.c
+++ b/drivers/pci/pci-uclass.c
@@ -49,7 +49,7 @@
 
 pci_dev_t dm_pci_get_bdf(const struct udevice *dev)
 {
-	struct pci_child_platdata *pplat = dev_get_parent_plat(dev);
+	struct pci_child_plat *pplat = dev_get_parent_plat(dev);
 	struct udevice *bus = dev->parent;
 
 	/*
@@ -136,7 +136,7 @@
 	for (device_find_first_child(bus, &dev);
 	     dev;
 	     device_find_next_child(&dev)) {
-		struct pci_child_platdata *pplat;
+		struct pci_child_plat *pplat;
 
 		pplat = dev_get_parent_plat(dev);
 		if (pplat && pplat->devfn == find_devfn) {
@@ -162,7 +162,7 @@
 static int pci_device_matches_ids(struct udevice *dev,
 				  struct pci_device_id *ids)
 {
-	struct pci_child_platdata *pplat;
+	struct pci_child_plat *pplat;
 	int i;
 
 	pplat = dev_get_parent_plat(dev);
@@ -218,7 +218,7 @@
 				  unsigned int device, int *indexp,
 				  struct udevice **devp)
 {
-	struct pci_child_platdata *pplat;
+	struct pci_child_plat *pplat;
 	struct udevice *dev;
 
 	for (device_find_first_child(bus, &dev);
@@ -261,7 +261,7 @@
 	for (pci_find_first_device(&dev);
 	     dev;
 	     pci_find_next_device(&dev)) {
-		struct pci_child_platdata *pplat = dev_get_parent_plat(dev);
+		struct pci_child_plat *pplat = dev_get_parent_plat(dev);
 
 		if (pplat->class == find_class && !index--) {
 			*devp = dev;
@@ -524,7 +524,7 @@
 int pci_auto_config_devices(struct udevice *bus)
 {
 	struct pci_controller *hose = bus->uclass_priv;
-	struct pci_child_platdata *pplat;
+	struct pci_child_plat *pplat;
 	unsigned int sub_bus;
 	struct udevice *dev;
 	int ret;
@@ -807,7 +807,7 @@
 		      PCI_MAX_PCI_FUNCTIONS - 1);
 	for (bdf = PCI_BDF(bus->seq, 0, 0); bdf <= end;
 	     bdf += PCI_BDF(0, 0, 1)) {
-		struct pci_child_platdata *pplat;
+		struct pci_child_plat *pplat;
 		struct udevice *dev;
 		ulong class;
 
@@ -1080,7 +1080,7 @@
 
 static int pci_uclass_child_post_bind(struct udevice *dev)
 {
-	struct pci_child_platdata *pplat;
+	struct pci_child_plat *pplat;
 
 	if (!dev_of_valid(dev))
 		return 0;
@@ -1441,7 +1441,7 @@
 }
 
 static phys_addr_t dm_pci_map_ea_virt(struct udevice *dev, int ea_off,
-				      struct pci_child_platdata *pdata)
+				      struct pci_child_plat *pdata)
 {
 	phys_addr_t addr = 0;
 
@@ -1472,7 +1472,7 @@
 }
 
 static void *dm_pci_map_ea_bar(struct udevice *dev, int bar, int flags,
-			       int ea_off, struct pci_child_platdata *pdata)
+			       int ea_off, struct pci_child_plat *pdata)
 {
 	int ea_cnt, i, entry_size;
 	int bar_id = (bar - PCI_BASE_ADDRESS_0) >> 2;
@@ -1523,7 +1523,7 @@
 
 void *dm_pci_map_bar(struct udevice *dev, int bar, int flags)
 {
-	struct pci_child_platdata *pdata = dev_get_parent_plat(dev);
+	struct pci_child_plat *pdata = dev_get_parent_plat(dev);
 	struct udevice *udev = dev;
 	pci_addr_t pci_bus_addr;
 	u32 bar_response;
@@ -1725,7 +1725,7 @@
 	bdf += PCI_BDF(0, 0, vf_offset);
 
 	for (vf = 0; vf < num_vfs; vf++) {
-		struct pci_child_platdata *pplat;
+		struct pci_child_plat *pplat;
 		ulong class;
 
 		pci_bus_read_config(bus, bdf, PCI_CLASS_DEVICE,
@@ -1797,7 +1797,7 @@
 	.post_probe	= pci_uclass_post_probe,
 	.child_post_bind = pci_uclass_child_post_bind,
 	.per_device_auto	= sizeof(struct pci_controller),
-	.per_child_plat_auto	= sizeof(struct pci_child_platdata),
+	.per_child_plat_auto	= sizeof(struct pci_child_plat),
 };
 
 static const struct dm_pci_ops pci_bridge_ops = {
diff --git a/drivers/pci/pci_rom.c b/drivers/pci/pci_rom.c
index 9c98496..4a21813 100644
--- a/drivers/pci/pci_rom.c
+++ b/drivers/pci/pci_rom.c
@@ -68,7 +68,7 @@
 
 static int pci_rom_probe(struct udevice *dev, struct pci_rom_header **hdrp)
 {
-	struct pci_child_platdata *pplat = dev_get_parent_plat(dev);
+	struct pci_child_plat *pplat = dev_get_parent_plat(dev);
 	struct pci_rom_header *rom_header;
 	struct pci_rom_data *rom_data;
 	u16 rom_vendor, rom_device;
@@ -236,7 +236,7 @@
 int dm_pci_run_vga_bios(struct udevice *dev, int (*int15_handler)(void),
 			int exec_method)
 {
-	struct pci_child_platdata *pplat = dev_get_parent_plat(dev);
+	struct pci_child_plat *pplat = dev_get_parent_plat(dev);
 	struct pci_rom_header *rom = NULL, *ram = NULL;
 	int vesa_mode = -1;
 	bool emulate, alloced;
@@ -328,7 +328,7 @@
 #ifdef CONFIG_DM_VIDEO
 int vbe_setup_video_priv(struct vesa_mode_info *vesa,
 			 struct video_priv *uc_priv,
-			 struct video_uc_platdata *plat)
+			 struct video_uc_plat *plat)
 {
 	if (!vesa->x_resolution)
 		return log_msg_ret("No x resolution", -ENXIO);
@@ -363,7 +363,7 @@
 
 int vbe_setup_video(struct udevice *dev, int (*int15_handler)(void))
 {
-	struct video_uc_platdata *plat = dev_get_uclass_plat(dev);
+	struct video_uc_plat *plat = dev_get_uclass_plat(dev);
 	struct video_priv *uc_priv = dev_get_uclass_priv(dev);
 	int ret;
 
diff --git a/drivers/pci/pci_sandbox.c b/drivers/pci/pci_sandbox.c
index e292410..ca44d00 100644
--- a/drivers/pci/pci_sandbox.c
+++ b/drivers/pci/pci_sandbox.c
@@ -132,5 +132,5 @@
 
 	/* Attach an emulator if we can */
 	.child_post_bind = dm_scan_fdt_dev,
-	.per_child_plat_auto	= sizeof(struct pci_child_platdata),
+	.per_child_plat_auto	= sizeof(struct pci_child_plat),
 };
diff --git a/drivers/pci/pcie_mediatek.c b/drivers/pci/pcie_mediatek.c
index 41c38ed..16a9dbf 100644
--- a/drivers/pci/pcie_mediatek.c
+++ b/drivers/pci/pcie_mediatek.c
@@ -251,7 +251,7 @@
 	struct mtk_pcie *pcie = dev_get_priv(bus);
 	struct mtk_pcie_port *port;
 	struct udevice *dev;
-	struct pci_child_platdata *pplat = NULL;
+	struct pci_child_plat *pplat = NULL;
 	int ret = 0;
 
 	if (PCI_BUS(bdf) != 0) {
diff --git a/drivers/pinctrl/intel/pinctrl.c b/drivers/pinctrl/intel/pinctrl.c
index 64cde5e..9f96505 100644
--- a/drivers/pinctrl/intel/pinctrl.c
+++ b/drivers/pinctrl/intel/pinctrl.c
@@ -616,7 +616,7 @@
 int intel_pinctrl_of_to_plat(struct udevice *dev,
 			     const struct pad_community *comm, int num_cfgs)
 {
-	struct p2sb_child_platdata *pplat = dev_get_parent_plat(dev);
+	struct p2sb_child_plat *pplat = dev_get_parent_plat(dev);
 	struct intel_pinctrl_priv *priv = dev_get_priv(dev);
 
 	if (!comm) {
diff --git a/drivers/pinctrl/intel/pinctrl_apl.c b/drivers/pinctrl/intel/pinctrl_apl.c
index 2432f3f..48b0e9a 100644
--- a/drivers/pinctrl/intel/pinctrl_apl.c
+++ b/drivers/pinctrl/intel/pinctrl_apl.c
@@ -18,11 +18,11 @@
 #include <asm/intel_pinctrl_defs.h>
 
 /**
- * struct apl_gpio_platdata - platform data for each device
+ * struct apl_gpio_plat - platform data for each device
  *
  * @dtplat: of-platdata data from C struct
  */
-struct apl_gpio_platdata {
+struct apl_gpio_plat {
 #if CONFIG_IS_ENABLED(OF_PLATDATA)
 	/* Put this first since driver model will copy the data here */
 	struct dtd_intel_apl_pinctrl dtplat;
@@ -138,12 +138,12 @@
 
 static int apl_pinctrl_of_to_plat(struct udevice *dev)
 {
-	struct p2sb_child_platdata *pplat;
+	struct p2sb_child_plat *pplat;
 	const struct pad_community *comm = NULL;
 	int i;
 
 #if CONFIG_IS_ENABLED(OF_PLATDATA)
-	struct apl_gpio_platdata *plat = dev_get_plat(dev);
+	struct apl_gpio_plat *plat = dev_get_plat(dev);
 	int ret;
 
 	/*
@@ -185,5 +185,5 @@
 #endif
 	.of_to_plat = apl_pinctrl_of_to_plat,
 	.priv_auto	= sizeof(struct intel_pinctrl_priv),
-	.plat_auto	= sizeof(struct apl_gpio_platdata),
+	.plat_auto	= sizeof(struct apl_gpio_plat),
 };
diff --git a/drivers/pinctrl/pinctrl-at91-pio4.c b/drivers/pinctrl/pinctrl-at91-pio4.c
index 9a25cfa..1aba8a9 100644
--- a/drivers/pinctrl/pinctrl-at91-pio4.c
+++ b/drivers/pinctrl/pinctrl-at91-pio4.c
@@ -22,7 +22,7 @@
  * framework groups, Atmel PIO groups will be called banks.
  */
 
-struct atmel_pio4_platdata {
+struct atmel_pio4_plat {
 	struct atmel_pio4_port *reg_base;
 };
 
@@ -95,7 +95,7 @@
 static inline struct atmel_pio4_port *atmel_pio4_bank_base(struct udevice *dev,
 							   u32 bank)
 {
-	struct atmel_pio4_platdata *plat = dev_get_plat(dev);
+	struct atmel_pio4_plat *plat = dev_get_plat(dev);
 	struct atmel_pio4_port *bank_base =
 			(struct atmel_pio4_port *)((u32)plat->reg_base +
 			ATMEL_PIO_BANK_OFFSET * bank);
@@ -154,7 +154,7 @@
 
 static int atmel_pinctrl_probe(struct udevice *dev)
 {
-	struct atmel_pio4_platdata *plat = dev_get_plat(dev);
+	struct atmel_pio4_plat *plat = dev_get_plat(dev);
 	fdt_addr_t addr_base;
 
 	dev = dev_get_parent(dev);
@@ -178,6 +178,6 @@
 	.id = UCLASS_PINCTRL,
 	.of_match = atmel_pinctrl_match,
 	.probe = atmel_pinctrl_probe,
-	.plat_auto	= sizeof(struct atmel_pio4_platdata),
+	.plat_auto	= sizeof(struct atmel_pio4_plat),
 	.ops = &atmel_pinctrl_ops,
 };
diff --git a/drivers/pinctrl/pinctrl-qe-io.c b/drivers/pinctrl/pinctrl-qe-io.c
index 5093a52..690e5c7 100644
--- a/drivers/pinctrl/pinctrl-qe-io.c
+++ b/drivers/pinctrl/pinctrl-qe-io.c
@@ -18,12 +18,12 @@
 #include <linux/ioport.h>
 
 /**
- * struct qe_io_platdata
+ * struct qe_io_plat
  *
  * @base:		Base register address
  * @num_par_io_ports	number of io ports
  */
-struct qe_io_platdata {
+struct qe_io_plat {
 	qepio83xx_t *base;
 	u32 num_io_ports;
 };
@@ -122,7 +122,7 @@
 #else
 static int qe_io_of_to_plat(struct udevice *dev)
 {
-	struct qe_io_platdata *plat = dev->plat;
+	struct qe_io_plat *plat = dev->plat;
 	fdt_addr_t addr;
 
 	addr = dev_read_addr(dev);
@@ -143,7 +143,7 @@
  */
 static int par_io_of_config_node(struct udevice *dev, ofnode pio)
 {
-	struct qe_io_platdata *plat = dev->plat;
+	struct qe_io_plat *plat = dev->plat;
 	qepio83xx_t *par_io = plat->base;
 	const unsigned int *pio_map;
 	int pio_map_len;
@@ -246,7 +246,7 @@
 	.of_match = of_match_ptr(par_io_pinctrl_match),
 	.probe = par_io_pinctrl_probe,
 	.of_to_plat = qe_io_of_to_plat,
-	.plat_auto	= sizeof(struct qe_io_platdata),
+	.plat_auto	= sizeof(struct qe_io_plat),
 	.ops = &par_io_pinctrl_ops,
 #if CONFIG_IS_ENABLED(OF_CONTROL) && !CONFIG_IS_ENABLED(OF_PLATDATA)
 	.flags	= DM_FLAG_PRE_RELOC,
diff --git a/drivers/pinctrl/pinctrl-sti.c b/drivers/pinctrl/pinctrl-sti.c
index 1ea869a..aaaa6bd 100644
--- a/drivers/pinctrl/pinctrl-sti.c
+++ b/drivers/pinctrl/pinctrl-sti.c
@@ -41,7 +41,7 @@
 		/* oe = 1, pu = 1, od = 1 */
 #define BIDIR_PU		(OE | PU | OD)
 
-struct sti_pinctrl_platdata {
+struct sti_pinctrl_plat {
 	struct regmap *regmap;
 };
 
@@ -57,7 +57,7 @@
  */
 void sti_alternate_select(struct udevice *dev, struct sti_pin_desc *pin_desc)
 {
-	struct sti_pinctrl_platdata *plat = dev_get_plat(dev);
+	struct sti_pinctrl_plat *plat = dev_get_plat(dev);
 	unsigned long sysconf, *sysconfreg;
 	int alt = pin_desc->alt;
 	int bank = pin_desc->bank;
@@ -91,7 +91,7 @@
 /* pin configuration */
 void sti_pin_configure(struct udevice *dev, struct sti_pin_desc *pin_desc)
 {
-	struct sti_pinctrl_platdata *plat = dev_get_plat(dev);
+	struct sti_pinctrl_plat *plat = dev_get_plat(dev);
 	int bit;
 	int oe = 0, pu = 0, od = 0;
 	unsigned long *sysconfreg;
@@ -277,7 +277,7 @@
 
 static int sti_pinctrl_probe(struct udevice *dev)
 {
-	struct sti_pinctrl_platdata *plat = dev_get_plat(dev);
+	struct sti_pinctrl_plat *plat = dev_get_plat(dev);
 	struct udevice *syscon;
 	int err;
 
@@ -316,6 +316,6 @@
 	.of_match = sti_pinctrl_ids,
 	.ops = &sti_pinctrl_ops,
 	.probe = sti_pinctrl_probe,
-	.plat_auto	= sizeof(struct sti_pinctrl_platdata),
+	.plat_auto	= sizeof(struct sti_pinctrl_plat),
 	.ops = &sti_pinctrl_ops,
 };
diff --git a/drivers/pinctrl/renesas/pfc-r7s72100.c b/drivers/pinctrl/renesas/pfc-r7s72100.c
index bc81684..82bdf05 100644
--- a/drivers/pinctrl/renesas/pfc-r7s72100.c
+++ b/drivers/pinctrl/renesas/pfc-r7s72100.c
@@ -32,14 +32,14 @@
 
 DECLARE_GLOBAL_DATA_PTR;
 
-struct r7s72100_pfc_platdata {
+struct r7s72100_pfc_plat {
 	void __iomem	*base;
 };
 
 static void r7s72100_pfc_set_function(struct udevice *dev, u16 bank, u16 line,
 				      u16 func, u16 inbuf, u16 bidir)
 {
-	struct r7s72100_pfc_platdata *plat = dev_get_plat(dev);
+	struct r7s72100_pfc_plat *plat = dev_get_plat(dev);
 
 	clrsetbits_le16(plat->base + PFCAE(bank), BIT(line),
 			(func & BIT(2)) ? BIT(line) : 0);
@@ -108,7 +108,7 @@
 
 static int r7s72100_pfc_probe(struct udevice *dev)
 {
-	struct r7s72100_pfc_platdata *plat = dev_get_plat(dev);
+	struct r7s72100_pfc_plat *plat = dev_get_plat(dev);
 	fdt_addr_t addr_base;
 	ofnode node;
 
@@ -142,6 +142,6 @@
 	.id		= UCLASS_PINCTRL,
 	.of_match	= r7s72100_pfc_match,
 	.probe		= r7s72100_pfc_probe,
-	.plat_auto	= sizeof(struct r7s72100_pfc_platdata),
+	.plat_auto	= sizeof(struct r7s72100_pfc_plat),
 	.ops		= &r7s72100_pfc_ops,
 };
diff --git a/drivers/power/acpi_pmc/acpi-pmc-uclass.c b/drivers/power/acpi_pmc/acpi-pmc-uclass.c
index 7eeecc0..32a2836 100644
--- a/drivers/power/acpi_pmc/acpi-pmc-uclass.c
+++ b/drivers/power/acpi_pmc/acpi-pmc-uclass.c
@@ -204,7 +204,7 @@
 	       upriv->gen_pmcon1, upriv->gen_pmcon2, upriv->gen_pmcon3);
 }
 
-int pmc_ofdata_to_uc_platdata(struct udevice *dev)
+int pmc_ofdata_to_uc_plat(struct udevice *dev)
 {
 	struct acpi_pmc_upriv *upriv = dev_get_uclass_priv(dev);
 	int ret;
diff --git a/drivers/power/acpi_pmc/pmc_emul.c b/drivers/power/acpi_pmc/pmc_emul.c
index 0a72afd..a61eb5b 100644
--- a/drivers/power/acpi_pmc/pmc_emul.c
+++ b/drivers/power/acpi_pmc/pmc_emul.c
@@ -14,12 +14,12 @@
 #include <power/acpi_pmc.h>
 
 /**
- * struct pmc_emul_platdata - platform data for this device
+ * struct pmc_emul_plat - platform data for this device
  *
  * @command:	Current PCI command value
  * @bar:	Current base address values
  */
-struct pmc_emul_platdata {
+struct pmc_emul_plat {
 	u16 command;
 	u32 bar[6];
 };
@@ -46,7 +46,7 @@
 static int sandbox_pmc_emul_read_config(const struct udevice *emul, uint offset,
 					ulong *valuep, enum pci_size_t size)
 {
-	struct pmc_emul_platdata *plat = dev_get_plat(emul);
+	struct pmc_emul_plat *plat = dev_get_plat(emul);
 
 	switch (offset) {
 	case PCI_COMMAND:
@@ -99,7 +99,7 @@
 static int sandbox_pmc_emul_write_config(struct udevice *emul, uint offset,
 					 ulong value, enum pci_size_t size)
 {
-	struct pmc_emul_platdata *plat = dev_get_plat(emul);
+	struct pmc_emul_plat *plat = dev_get_plat(emul);
 
 	switch (offset) {
 	case PCI_COMMAND:
@@ -127,7 +127,7 @@
 static int sandbox_pmc_emul_find_bar(struct udevice *emul, unsigned int addr,
 				     int *barnump, unsigned int *offsetp)
 {
-	struct pmc_emul_platdata *plat = dev_get_plat(emul);
+	struct pmc_emul_plat *plat = dev_get_plat(emul);
 	int barnum;
 
 	for (barnum = 0; barnum < ARRAY_SIZE(barinfo); barnum++) {
@@ -236,7 +236,7 @@
 	.ops		= &sandbox_pmc_emul_emul_ops,
 	.probe		= sandbox_pmc_probe,
 	.priv_auto	= sizeof(struct pmc_emul_priv),
-	.plat_auto	= sizeof(struct pmc_emul_platdata),
+	.plat_auto	= sizeof(struct pmc_emul_plat),
 };
 
 static struct pci_device_id sandbox_pmc_emul_supported[] = {
diff --git a/drivers/power/acpi_pmc/sandbox.c b/drivers/power/acpi_pmc/sandbox.c
index 6cb7af1..8cf03f7 100644
--- a/drivers/power/acpi_pmc/sandbox.c
+++ b/drivers/power/acpi_pmc/sandbox.c
@@ -74,7 +74,7 @@
 	upriv->pmc_bar0 = map_sysmem(base, 0x2000);
 	upriv->gpe_cfg = (u32 *)(upriv->pmc_bar0 + GPIO_GPE_CFG);
 
-	return pmc_ofdata_to_uc_platdata(dev);
+	return pmc_ofdata_to_uc_plat(dev);
 }
 
 static struct acpi_pmc_ops sandbox_pmc_ops = {
diff --git a/drivers/power/domain/imx8-power-domain-legacy.c b/drivers/power/domain/imx8-power-domain-legacy.c
index cf6e068..ec369ae 100644
--- a/drivers/power/domain/imx8-power-domain-legacy.c
+++ b/drivers/power/domain/imx8-power-domain-legacy.c
@@ -100,7 +100,7 @@
 static int imx8_power_domain_on(struct power_domain *power_domain)
 {
 	struct udevice *dev = power_domain->dev;
-	struct imx8_power_domain_platdata *pdata;
+	struct imx8_power_domain_plat *pdata;
 	struct imx8_power_domain_priv *ppriv;
 	sc_err_t ret;
 	int err;
@@ -116,7 +116,7 @@
 			return err;
 	}
 
-	pdata = (struct imx8_power_domain_platdata *)dev_get_plat(dev);
+	pdata = (struct imx8_power_domain_plat *)dev_get_plat(dev);
 	ppriv = (struct imx8_power_domain_priv *)dev_get_priv(dev);
 
 	debug("%s(power_domain=%s) resource_id %d\n", __func__, dev->name,
@@ -151,7 +151,7 @@
 	struct udevice *child;
 	struct imx8_power_domain_priv *ppriv;
 	struct imx8_power_domain_priv *child_ppriv;
-	struct imx8_power_domain_platdata *pdata;
+	struct imx8_power_domain_plat *pdata;
 	sc_err_t ret;
 
 	ppriv = dev_get_priv(dev);
@@ -202,13 +202,13 @@
 	struct udevice *child;
 	struct imx8_power_domain_priv *ppriv;
 	struct imx8_power_domain_priv *child_ppriv;
-	struct imx8_power_domain_platdata *pdata;
+	struct imx8_power_domain_plat *pdata;
 	sc_err_t ret;
 	struct power_domain parent_pd;
 
 	if (device_get_uclass_id(parent) == UCLASS_POWER_DOMAIN) {
 		pdata =
-		(struct imx8_power_domain_platdata *)dev_get_plat(parent);
+		(struct imx8_power_domain_plat *)dev_get_plat(parent);
 		ppriv = (struct imx8_power_domain_priv *)dev_get_priv(parent);
 
 		debug("%s, %s, state_on %d\n", __func__, parent->name,
@@ -343,7 +343,7 @@
 static int imx8_power_domain_of_to_plat(struct udevice *dev)
 {
 	int reg;
-	struct imx8_power_domain_platdata *pdata = dev_get_plat(dev);
+	struct imx8_power_domain_plat *pdata = dev_get_plat(dev);
 
 	reg = fdtdec_get_int(gd->fdt_blob, dev_of_offset(dev), "reg", -1);
 	if (reg == -1) {
@@ -377,7 +377,7 @@
 	.bind = imx8_power_domain_bind,
 	.probe = imx8_power_domain_probe,
 	.of_to_plat = imx8_power_domain_of_to_plat,
-	.plat_auto	= sizeof(struct imx8_power_domain_platdata),
+	.plat_auto	= sizeof(struct imx8_power_domain_plat),
 	.priv_auto	= sizeof(struct imx8_power_domain_priv),
 	.ops = &imx8_power_domain_ops,
 	.flags	= DM_FLAG_DEFAULT_PD_CTRL_OFF,
diff --git a/drivers/power/domain/imx8m-power-domain.c b/drivers/power/domain/imx8m-power-domain.c
index 4997889..341c83b 100644
--- a/drivers/power/domain/imx8m-power-domain.c
+++ b/drivers/power/domain/imx8m-power-domain.c
@@ -30,7 +30,7 @@
 static int imx8m_power_domain_on(struct power_domain *power_domain)
 {
 	struct udevice *dev = power_domain->dev;
-	struct imx8m_power_domain_platdata *pdata;
+	struct imx8m_power_domain_plat *pdata;
 
 	pdata = dev_get_plat(dev);
 
@@ -49,7 +49,7 @@
 static int imx8m_power_domain_off(struct power_domain *power_domain)
 {
 	struct udevice *dev = power_domain->dev;
-	struct imx8m_power_domain_platdata *pdata;
+	struct imx8m_power_domain_plat *pdata;
 	pdata = dev_get_plat(dev);
 
 	if (pdata->resource_id < 0)
@@ -106,7 +106,7 @@
 
 static int imx8m_power_domain_of_to_plat(struct udevice *dev)
 {
-	struct imx8m_power_domain_platdata *pdata = dev_get_plat(dev);
+	struct imx8m_power_domain_plat *pdata = dev_get_plat(dev);
 
 	pdata->resource_id = fdtdec_get_int(gd->fdt_blob, dev_of_offset(dev),
 					    "reg", -1);
@@ -137,6 +137,6 @@
 	.bind = imx8m_power_domain_bind,
 	.probe = imx8m_power_domain_probe,
 	.of_to_plat = imx8m_power_domain_of_to_plat,
-	.plat_auto	= sizeof(struct imx8m_power_domain_platdata),
+	.plat_auto	= sizeof(struct imx8m_power_domain_plat),
 	.ops = &imx8m_power_domain_ops,
 };
diff --git a/drivers/power/regulator/bd71837.c b/drivers/power/regulator/bd71837.c
index 1637a2d..74011d6 100644
--- a/drivers/power/regulator/bd71837.c
+++ b/drivers/power/regulator/bd71837.c
@@ -35,7 +35,7 @@
 };
 
 /**
- * struct bd71837_platdata - describe regulator control registers
+ * struct bd71837_plat - describe regulator control registers
  *
  * @name:	name of the regulator. Used for matching the dt-entry
  * @enable_reg:	register address used to enable/disable regulator
@@ -49,7 +49,7 @@
  * @sel_mask:	bit to toggle in order to transfer the register control to SW
  * @dvs:	whether the voltage can be changed when regulator is enabled
  */
-struct bd71837_platdata {
+struct bd71837_plat {
 	const char		*name;
 	u8			enable_reg;
 	u8			enablemask;
@@ -160,7 +160,7 @@
  * is powering NXP i.MX8. In this use-case we (for now) only allow control
  * for BUCK3 and BUCK4 which are not boot critical.
  */
-static struct bd71837_platdata bd71837_reg_data[] = {
+static struct bd71837_plat bd71837_reg_data[] = {
 /* Bucks 1-4 which support dynamic voltage scaling */
 	BD_DATA("BUCK1", BD718XX_BUCK1_CTRL, HW_STATE_CONTROL,
 		BD718XX_BUCK1_VOLT_RUN, DVS_BUCK_RUN_MASK, dvs_buck_vranges, 0,
@@ -205,7 +205,7 @@
 		BD71837_LDO7_MASK, ldo7_vranges, 0, false, BD718XX_LDO_SEL),
 };
 
-static struct bd71837_platdata bd71847_reg_data[] = {
+static struct bd71837_plat bd71847_reg_data[] = {
 /* Bucks 1 and 2 which support dynamic voltage scaling */
 	BD_DATA("BUCK1", BD718XX_BUCK1_CTRL, HW_STATE_CONTROL,
 		BD718XX_BUCK1_VOLT_RUN, DVS_BUCK_RUN_MASK, dvs_buck_vranges, 0,
@@ -274,7 +274,7 @@
 static int bd71837_get_enable(struct udevice *dev)
 {
 	int val;
-	struct bd71837_platdata *plat = dev_get_plat(dev);
+	struct bd71837_plat *plat = dev_get_plat(dev);
 
 	/*
 	 * boot critical regulators on bd71837 must not be controlled by sw
@@ -298,7 +298,7 @@
 static int bd71837_set_enable(struct udevice *dev, bool enable)
 {
 	int val = 0;
-	struct bd71837_platdata *plat = dev_get_plat(dev);
+	struct bd71837_plat *plat = dev_get_plat(dev);
 
 	/*
 	 * boot critical regulators on bd71837 must not be controlled by sw
@@ -321,7 +321,7 @@
 	unsigned int range;
 	int i;
 	int found = 0;
-	struct bd71837_platdata *plat = dev_get_plat(dev);
+	struct bd71837_plat *plat = dev_get_plat(dev);
 
 	/*
 	 * An under/overshooting may occur if voltage is changed for other
@@ -369,7 +369,7 @@
 {
 	unsigned int reg, range;
 	unsigned int tmp;
-	struct bd71837_platdata *plat = dev_get_plat(dev);
+	struct bd71837_plat *plat = dev_get_plat(dev);
 	int i;
 
 	reg = pmic_reg_read(dev->parent, plat->volt_reg);
@@ -399,11 +399,11 @@
 
 static int bd71837_regulator_probe(struct udevice *dev)
 {
-	struct bd71837_platdata *plat = dev_get_plat(dev);
+	struct bd71837_plat *plat = dev_get_plat(dev);
 	int i, ret;
 	struct dm_regulator_uclass_plat *uc_pdata;
 	int type;
-	struct bd71837_platdata *init_data;
+	struct bd71837_plat *init_data;
 	int data_amnt;
 
 	type = dev_get_driver_data(dev_get_parent(dev));
@@ -466,5 +466,5 @@
 	.id = UCLASS_REGULATOR,
 	.ops = &bd71837_regulator_ops,
 	.probe = bd71837_regulator_probe,
-	.plat_auto	= sizeof(struct bd71837_platdata),
+	.plat_auto	= sizeof(struct bd71837_plat),
 };
diff --git a/drivers/power/regulator/fan53555.c b/drivers/power/regulator/fan53555.c
index fcd1d52..9d8a235 100644
--- a/drivers/power/regulator/fan53555.c
+++ b/drivers/power/regulator/fan53555.c
@@ -78,7 +78,7 @@
 	FAN53555_MONITOR,
 };
 
-struct fan53555_platdata {
+struct fan53555_plat {
 	/* Voltage setting register */
 	unsigned int vol_reg;
 	unsigned int sleep_reg;
@@ -102,7 +102,7 @@
 
 static int fan53555_regulator_of_to_plat(struct udevice *dev)
 {
-	struct fan53555_platdata *dev_pdata = dev_get_plat(dev);
+	struct fan53555_plat *dev_pdata = dev_get_plat(dev);
 	struct dm_regulator_uclass_plat *uc_pdata =
 		dev_get_uclass_plat(dev);
 	u32 sleep_vsel;
@@ -136,7 +136,7 @@
 
 static int fan53555_regulator_get_value(struct udevice *dev)
 {
-	struct fan53555_platdata *pdata = dev_get_plat(dev);
+	struct fan53555_plat *pdata = dev_get_plat(dev);
 	struct fan53555_priv *priv = dev_get_priv(dev);
 	int reg;
 	int voltage;
@@ -153,7 +153,7 @@
 
 static int fan53555_regulator_set_value(struct udevice *dev, int uV)
 {
-	struct fan53555_platdata *pdata = dev_get_plat(dev);
+	struct fan53555_plat *pdata = dev_get_plat(dev);
 	struct fan53555_priv *priv = dev_get_priv(dev);
 	u8 vol;
 
@@ -239,7 +239,7 @@
 	.id = UCLASS_REGULATOR,
 	.ops = &fan53555_regulator_ops,
 	.of_to_plat = fan53555_regulator_of_to_plat,
-	.plat_auto	= sizeof(struct fan53555_platdata),
+	.plat_auto	= sizeof(struct fan53555_plat),
 	.priv_auto	= sizeof(struct fan53555_priv),
 	.probe = fan53555_probe,
 };
diff --git a/drivers/power/regulator/fixed.c b/drivers/power/regulator/fixed.c
index efe2ec9..d3e0fb6 100644
--- a/drivers/power/regulator/fixed.c
+++ b/drivers/power/regulator/fixed.c
@@ -17,7 +17,7 @@
 static int fixed_regulator_of_to_plat(struct udevice *dev)
 {
 	struct dm_regulator_uclass_plat *uc_pdata;
-	struct regulator_common_platdata *dev_pdata;
+	struct regulator_common_plat *dev_pdata;
 
 	dev_pdata = dev_get_plat(dev);
 	uc_pdata = dev_get_uclass_plat(dev);
@@ -89,5 +89,5 @@
 	.ops = &fixed_regulator_ops,
 	.of_match = fixed_regulator_ids,
 	.of_to_plat = fixed_regulator_of_to_plat,
-	.plat_auto	= sizeof(struct regulator_common_platdata),
+	.plat_auto	= sizeof(struct regulator_common_plat),
 };
diff --git a/drivers/power/regulator/gpio-regulator.c b/drivers/power/regulator/gpio-regulator.c
index 2565c44..e5e08a3 100644
--- a/drivers/power/regulator/gpio-regulator.c
+++ b/drivers/power/regulator/gpio-regulator.c
@@ -18,8 +18,8 @@
 
 #define GPIO_REGULATOR_MAX_STATES	2
 
-struct gpio_regulator_platdata {
-	struct regulator_common_platdata common;
+struct gpio_regulator_plat {
+	struct regulator_common_plat common;
 	struct gpio_desc gpio; /* GPIO for regulator voltage control */
 	int states[GPIO_REGULATOR_MAX_STATES];
 	int voltages[GPIO_REGULATOR_MAX_STATES];
@@ -28,7 +28,7 @@
 static int gpio_regulator_of_to_plat(struct udevice *dev)
 {
 	struct dm_regulator_uclass_plat *uc_pdata;
-	struct gpio_regulator_platdata *dev_pdata;
+	struct gpio_regulator_plat *dev_pdata;
 	struct gpio_desc *gpio;
 	int ret, count, i, j;
 	u32 states_array[GPIO_REGULATOR_MAX_STATES * 2];
@@ -80,7 +80,7 @@
 static int gpio_regulator_get_value(struct udevice *dev)
 {
 	struct dm_regulator_uclass_plat *uc_pdata;
-	struct gpio_regulator_platdata *dev_pdata = dev_get_plat(dev);
+	struct gpio_regulator_plat *dev_pdata = dev_get_plat(dev);
 	int enable;
 
 	if (!dev_pdata->gpio.dev)
@@ -101,7 +101,7 @@
 
 static int gpio_regulator_set_value(struct udevice *dev, int uV)
 {
-	struct gpio_regulator_platdata *dev_pdata = dev_get_plat(dev);
+	struct gpio_regulator_plat *dev_pdata = dev_get_plat(dev);
 	int ret;
 	bool enable;
 
@@ -127,13 +127,13 @@
 
 static int gpio_regulator_get_enable(struct udevice *dev)
 {
-	struct gpio_regulator_platdata *dev_pdata = dev_get_plat(dev);
+	struct gpio_regulator_plat *dev_pdata = dev_get_plat(dev);
 	return regulator_common_get_enable(dev, &dev_pdata->common);
 }
 
 static int gpio_regulator_set_enable(struct udevice *dev, bool enable)
 {
-	struct gpio_regulator_platdata *dev_pdata = dev_get_plat(dev);
+	struct gpio_regulator_plat *dev_pdata = dev_get_plat(dev);
 	return regulator_common_set_enable(dev, &dev_pdata->common, enable);
 }
 
@@ -155,5 +155,5 @@
 	.ops = &gpio_regulator_ops,
 	.of_match = gpio_regulator_ids,
 	.of_to_plat = gpio_regulator_of_to_plat,
-	.plat_auto	= sizeof(struct gpio_regulator_platdata),
+	.plat_auto	= sizeof(struct gpio_regulator_plat),
 };
diff --git a/drivers/power/regulator/pfuze100.c b/drivers/power/regulator/pfuze100.c
index d75ea7c..698a6fa 100644
--- a/drivers/power/regulator/pfuze100.c
+++ b/drivers/power/regulator/pfuze100.c
@@ -41,11 +41,11 @@
 };
 
 /**
- * struct pfuze100_regulator_platdata - platform data for pfuze100
+ * struct pfuze100_regulator_plat - platform data for pfuze100
  *
  * @desc: Points the description entry of one regulator of pfuze100
  */
-struct pfuze100_regulator_platdata {
+struct pfuze100_regulator_plat {
 	struct pfuze100_regulator_desc *desc;
 };
 
@@ -261,7 +261,7 @@
 static int pfuze100_regulator_probe(struct udevice *dev)
 {
 	struct dm_regulator_uclass_plat *uc_pdata;
-	struct pfuze100_regulator_platdata *plat = dev_get_plat(dev);
+	struct pfuze100_regulator_plat *plat = dev_get_plat(dev);
 	struct pfuze100_regulator_desc *desc;
 
 	switch (dev_get_driver_data(dev_get_parent(dev))) {
@@ -315,7 +315,7 @@
 static int pfuze100_regulator_mode(struct udevice *dev, int op, int *opmode)
 {
 	int val;
-	struct pfuze100_regulator_platdata *plat = dev_get_plat(dev);
+	struct pfuze100_regulator_plat *plat = dev_get_plat(dev);
 	struct pfuze100_regulator_desc *desc = plat->desc;
 
 	if (op == PMIC_OP_GET) {
@@ -449,7 +449,7 @@
 {
 	int i;
 	int val;
-	struct pfuze100_regulator_platdata *plat = dev_get_plat(dev);
+	struct pfuze100_regulator_plat *plat = dev_get_plat(dev);
 	struct pfuze100_regulator_desc *desc = plat->desc;
 	struct dm_regulator_uclass_plat *uc_pdata =
 		dev_get_uclass_plat(dev);
@@ -572,5 +572,5 @@
 	.id = UCLASS_REGULATOR,
 	.ops = &pfuze100_regulator_ops,
 	.probe = pfuze100_regulator_probe,
-	.plat_auto	= sizeof(struct pfuze100_regulator_platdata),
+	.plat_auto	= sizeof(struct pfuze100_regulator_plat),
 };
diff --git a/drivers/power/regulator/regulator_common.c b/drivers/power/regulator/regulator_common.c
index d307a19..93d8196 100644
--- a/drivers/power/regulator/regulator_common.c
+++ b/drivers/power/regulator/regulator_common.c
@@ -13,7 +13,7 @@
 #include "regulator_common.h"
 
 int regulator_common_of_to_plat(struct udevice *dev,
-				struct regulator_common_platdata *dev_pdata,
+				struct regulator_common_plat *dev_pdata,
 				const char *enable_gpio_name)
 {
 	struct gpio_desc *gpio;
@@ -49,7 +49,7 @@
 }
 
 int regulator_common_get_enable(const struct udevice *dev,
-	struct regulator_common_platdata *dev_pdata)
+	struct regulator_common_plat *dev_pdata)
 {
 	/* Enable GPIO is optional */
 	if (!dev_pdata->gpio.dev)
@@ -59,7 +59,7 @@
 }
 
 int regulator_common_set_enable(const struct udevice *dev,
-	struct regulator_common_platdata *dev_pdata, bool enable)
+	struct regulator_common_plat *dev_pdata, bool enable)
 {
 	int ret;
 
diff --git a/drivers/power/regulator/regulator_common.h b/drivers/power/regulator/regulator_common.h
index 5ae0b9a..c10492f 100644
--- a/drivers/power/regulator/regulator_common.h
+++ b/drivers/power/regulator/regulator_common.h
@@ -9,18 +9,18 @@
 
 #include <asm/gpio.h>
 
-struct regulator_common_platdata {
+struct regulator_common_plat {
 	struct gpio_desc gpio; /* GPIO for regulator enable control */
 	unsigned int startup_delay_us;
 	unsigned int off_on_delay_us;
 };
 
 int regulator_common_of_to_plat(struct udevice *dev,
-				struct regulator_common_platdata *dev_pdata,
-				const char *enable_gpio_name);
+				struct regulator_common_plat *dev_pdata, const
+				char *enable_gpio_name);
 int regulator_common_get_enable(const struct udevice *dev,
-	struct regulator_common_platdata *dev_pdata);
+	struct regulator_common_plat *dev_pdata);
 int regulator_common_set_enable(const struct udevice *dev,
-	struct regulator_common_platdata *dev_pdata, bool enable);
+	struct regulator_common_plat *dev_pdata, bool enable);
 
 #endif /* _REGULATOR_COMMON_H */
diff --git a/drivers/ram/rockchip/dmc-rk3368.c b/drivers/ram/rockchip/dmc-rk3368.c
index 0e677f3..a9d0518 100644
--- a/drivers/ram/rockchip/dmc-rk3368.c
+++ b/drivers/ram/rockchip/dmc-rk3368.c
@@ -895,7 +895,7 @@
 }
 
 #if CONFIG_IS_ENABLED(OF_PLATDATA)
-static int conv_of_platdata(struct udevice *dev)
+static int conv_of_plat(struct udevice *dev)
 {
 	struct rk3368_sdram_params *plat = dev_get_plat(dev);
 	struct dtd_rockchip_rk3368_dmc *of_plat = &plat->of_plat;
@@ -923,7 +923,7 @@
 	struct dram_info *priv = dev_get_priv(dev);
 
 #if CONFIG_IS_ENABLED(OF_PLATDATA)
-	ret = conv_of_platdata(dev);
+	ret = conv_of_plat(dev);
 	if (ret)
 		return ret;
 #endif
diff --git a/drivers/ram/rockchip/sdram_rk3188.c b/drivers/ram/rockchip/sdram_rk3188.c
index d0b0601..25ae69e 100644
--- a/drivers/ram/rockchip/sdram_rk3188.c
+++ b/drivers/ram/rockchip/sdram_rk3188.c
@@ -853,7 +853,7 @@
 #endif /* CONFIG_SPL_BUILD */
 
 #if CONFIG_IS_ENABLED(OF_PLATDATA)
-static int conv_of_platdata(struct udevice *dev)
+static int conv_of_plat(struct udevice *dev)
 {
 	struct rk3188_sdram_params *plat = dev_get_plat(dev);
 	struct dtd_rockchip_rk3188_dmc *of_plat = &plat->of_plat;
@@ -866,9 +866,8 @@
 	memcpy(&plat->base, of_plat->rockchip_sdram_params, sizeof(plat->base));
 	/* rk3188 supports dual-channel, set default channel num to 2 */
 	plat->num_channels = 1;
-	ret = regmap_init_mem_platdata(dev, of_plat->reg,
-				       ARRAY_SIZE(of_plat->reg) / 2,
-				       &plat->map);
+	ret = regmap_init_mem_plat(dev, of_plat->reg,
+				   ARRAY_SIZE(of_plat->reg) / 2, &plat->map);
 	if (ret)
 		return ret;
 
@@ -890,7 +889,7 @@
 
 #ifdef CONFIG_SPL_BUILD
 #if CONFIG_IS_ENABLED(OF_PLATDATA)
-	ret = conv_of_platdata(dev);
+	ret = conv_of_plat(dev);
 	if (ret)
 		return ret;
 #endif
diff --git a/drivers/ram/rockchip/sdram_rk322x.c b/drivers/ram/rockchip/sdram_rk322x.c
index bdc463c..66235bd 100644
--- a/drivers/ram/rockchip/sdram_rk322x.c
+++ b/drivers/ram/rockchip/sdram_rk322x.c
@@ -754,7 +754,7 @@
 #endif /* CONFIG_TPL_BUILD */
 
 #if CONFIG_IS_ENABLED(OF_PLATDATA)
-static int conv_of_platdata(struct udevice *dev)
+static int conv_of_plat(struct udevice *dev)
 {
 	struct rk322x_sdram_params *plat = dev_get_plat(dev);
 	struct dtd_rockchip_rk322x_dmc *of_plat = &plat->of_plat;
@@ -767,9 +767,8 @@
 	memcpy(&plat->base, of_plat->rockchip_sdram_params, sizeof(plat->base));
 
 	plat->num_channels = 1;
-	ret = regmap_init_mem_platdata(dev, of_plat->reg,
-				       ARRAY_SIZE(of_plat->reg) / 2,
-				       &plat->map);
+	ret = regmap_init_mem_plat(dev, of_plat->reg,
+				   ARRAY_SIZE(of_plat->reg) / 2, &plat->map);
 	if (ret)
 		return ret;
 
@@ -789,7 +788,7 @@
 	priv->grf = syscon_get_first_range(ROCKCHIP_SYSCON_GRF);
 #ifdef CONFIG_TPL_BUILD
 #if CONFIG_IS_ENABLED(OF_PLATDATA)
-	ret = conv_of_platdata(dev);
+	ret = conv_of_plat(dev);
 	if (ret)
 		return ret;
 #endif
diff --git a/drivers/ram/rockchip/sdram_rk3288.c b/drivers/ram/rockchip/sdram_rk3288.c
index 094ae36..a933abf 100644
--- a/drivers/ram/rockchip/sdram_rk3288.c
+++ b/drivers/ram/rockchip/sdram_rk3288.c
@@ -1015,7 +1015,7 @@
 #endif /* CONFIG_SPL_BUILD */
 
 #if CONFIG_IS_ENABLED(OF_PLATDATA)
-static int conv_of_platdata(struct udevice *dev)
+static int conv_of_plat(struct udevice *dev)
 {
 	struct rk3288_sdram_params *plat = dev_get_plat(dev);
 	struct dtd_rockchip_rk3288_dmc *of_plat = &plat->of_plat;
@@ -1028,9 +1028,8 @@
 	memcpy(&plat->base, of_plat->rockchip_sdram_params, sizeof(plat->base));
 	/* Rk3288 supports dual-channel, set default channel num to 2 */
 	plat->num_channels = 2;
-	ret = regmap_init_mem_platdata(dev, of_plat->reg,
-				       ARRAY_SIZE(of_plat->reg) / 2,
-				       &plat->map);
+	ret = regmap_init_mem_plat(dev, of_plat->reg,
+				   ARRAY_SIZE(of_plat->reg) / 2, &plat->map);
 	if (ret)
 		return ret;
 
@@ -1053,7 +1052,7 @@
 #if defined(CONFIG_TPL_BUILD) || \
 	(!defined(CONFIG_TPL) && defined(CONFIG_SPL_BUILD))
 #if CONFIG_IS_ENABLED(OF_PLATDATA)
-	ret = conv_of_platdata(dev);
+	ret = conv_of_plat(dev);
 	if (ret)
 		return ret;
 #endif
diff --git a/drivers/ram/rockchip/sdram_rk3328.c b/drivers/ram/rockchip/sdram_rk3328.c
index cfd3515..9af4c37 100644
--- a/drivers/ram/rockchip/sdram_rk3328.c
+++ b/drivers/ram/rockchip/sdram_rk3328.c
@@ -48,15 +48,14 @@
 };
 
 #if CONFIG_IS_ENABLED(OF_PLATDATA)
-static int conv_of_platdata(struct udevice *dev)
+static int conv_of_plat(struct udevice *dev)
 {
 	struct rockchip_dmc_plat *plat = dev_get_plat(dev);
 	struct dtd_rockchip_rk3328_dmc *dtplat = &plat->dtplat;
 	int ret;
 
-	ret = regmap_init_mem_platdata(dev, dtplat->reg,
-				       ARRAY_SIZE(dtplat->reg) / 2,
-				       &plat->map);
+	ret = regmap_init_mem_plat(dev, dtplat->reg,
+				   ARRAY_SIZE(dtplat->reg) / 2, &plat->map);
 	if (ret)
 		return ret;
 
@@ -525,7 +524,7 @@
 	struct rk3328_sdram_params *params =
 					(void *)dtplat->rockchip_sdram_params;
 
-	ret = conv_of_platdata(dev);
+	ret = conv_of_plat(dev);
 	if (ret)
 		return ret;
 #endif
diff --git a/drivers/ram/rockchip/sdram_rk3399.c b/drivers/ram/rockchip/sdram_rk3399.c
index 261ded0..a83a670 100644
--- a/drivers/ram/rockchip/sdram_rk3399.c
+++ b/drivers/ram/rockchip/sdram_rk3399.c
@@ -3034,15 +3034,14 @@
 }
 
 #if CONFIG_IS_ENABLED(OF_PLATDATA)
-static int conv_of_platdata(struct udevice *dev)
+static int conv_of_plat(struct udevice *dev)
 {
 	struct rockchip_dmc_plat *plat = dev_get_plat(dev);
 	struct dtd_rockchip_rk3399_dmc *dtplat = &plat->dtplat;
 	int ret;
 
-	ret = regmap_init_mem_platdata(dev, dtplat->reg,
-				       ARRAY_SIZE(dtplat->reg) / 2,
-				       &plat->map);
+	ret = regmap_init_mem_plat(dev, dtplat->reg,
+				   ARRAY_SIZE(dtplat->reg) / 2, &plat->map);
 	if (ret)
 		return ret;
 
@@ -3076,7 +3075,7 @@
 	struct rk3399_sdram_params *params =
 					(void *)dtplat->rockchip_sdram_params;
 
-	ret = conv_of_platdata(dev);
+	ret = conv_of_plat(dev);
 	if (ret)
 		return ret;
 #endif
diff --git a/drivers/rng/meson-rng.c b/drivers/rng/meson-rng.c
index bebfce4..5a4f45a 100644
--- a/drivers/rng/meson-rng.c
+++ b/drivers/rng/meson-rng.c
@@ -11,7 +11,7 @@
 #include <rng.h>
 #include <asm/io.h>
 
-struct meson_rng_platdata {
+struct meson_rng_plat {
 	fdt_addr_t base;
 	struct clk clk;
 };
@@ -26,7 +26,7 @@
  */
 static int meson_rng_read(struct udevice *dev, void *data, size_t len)
 {
-	struct meson_rng_platdata *pdata = dev_get_plat(dev);
+	struct meson_rng_plat *pdata = dev_get_plat(dev);
 	char *buffer = (char *)data;
 
 	while (len) {
@@ -52,7 +52,7 @@
  */
 static int meson_rng_probe(struct udevice *dev)
 {
-	struct meson_rng_platdata *pdata = dev_get_plat(dev);
+	struct meson_rng_plat *pdata = dev_get_plat(dev);
 	int err;
 
 	err = clk_enable(&pdata->clk);
@@ -70,7 +70,7 @@
  */
 static int meson_rng_remove(struct udevice *dev)
 {
-	struct meson_rng_platdata *pdata = dev_get_plat(dev);
+	struct meson_rng_plat *pdata = dev_get_plat(dev);
 
 	return clk_disable(&pdata->clk);
 }
@@ -83,7 +83,7 @@
  */
 static int meson_rng_of_to_plat(struct udevice *dev)
 {
-	struct meson_rng_platdata *pdata = dev_get_plat(dev);
+	struct meson_rng_plat *pdata = dev_get_plat(dev);
 	int err;
 
 	pdata->base = dev_read_addr(dev);
@@ -116,6 +116,6 @@
 	.ops = &meson_rng_ops,
 	.probe = meson_rng_probe,
 	.remove = meson_rng_remove,
-	.plat_auto	= sizeof(struct meson_rng_platdata),
+	.plat_auto	= sizeof(struct meson_rng_plat),
 	.of_to_plat = meson_rng_of_to_plat,
 };
diff --git a/drivers/rng/rockchip_rng.c b/drivers/rng/rockchip_rng.c
index ec233d1..800150f 100644
--- a/drivers/rng/rockchip_rng.c
+++ b/drivers/rng/rockchip_rng.c
@@ -49,7 +49,7 @@
 	int (*rk_rng_read)(struct udevice *dev, void *data, size_t len);
 };
 
-struct rk_rng_platdata {
+struct rk_rng_plat {
 	fdt_addr_t base;
 	struct rk_rng_soc_data *soc_data;
 };
@@ -77,7 +77,7 @@
 
 static int rk_v1_rng_read(struct udevice *dev, void *data, size_t len)
 {
-	struct rk_rng_platdata *pdata = dev_get_priv(dev);
+	struct rk_rng_plat *pdata = dev_get_priv(dev);
 	u32 reg = 0;
 	int retval;
 
@@ -108,7 +108,7 @@
 
 static int rk_v2_rng_read(struct udevice *dev, void *data, size_t len)
 {
-	struct rk_rng_platdata *pdata = dev_get_priv(dev);
+	struct rk_rng_plat *pdata = dev_get_priv(dev);
 	u32 reg = 0;
 	int retval;
 
@@ -146,7 +146,7 @@
 	unsigned int i;
 	int ret = -EIO;
 
-	struct rk_rng_platdata *pdata = dev_get_priv(dev);
+	struct rk_rng_plat *pdata = dev_get_priv(dev);
 
 	if (!len)
 		return 0;
@@ -170,7 +170,7 @@
 
 static int rockchip_rng_of_to_plat(struct udevice *dev)
 {
-	struct rk_rng_platdata *pdata = dev_get_priv(dev);
+	struct rk_rng_plat *pdata = dev_get_priv(dev);
 
 	memset(pdata, 0x00, sizeof(*pdata));
 
@@ -183,7 +183,7 @@
 
 static int rockchip_rng_probe(struct udevice *dev)
 {
-	struct rk_rng_platdata *pdata = dev_get_priv(dev);
+	struct rk_rng_plat *pdata = dev_get_priv(dev);
 
 	pdata->soc_data = (struct rk_rng_soc_data *)dev_get_driver_data(dev);
 
@@ -221,5 +221,5 @@
 	.ops = &rockchip_rng_ops,
 	.probe = rockchip_rng_probe,
 	.of_to_plat = rockchip_rng_of_to_plat,
-	.priv_auto	= sizeof(struct rk_rng_platdata),
+	.priv_auto	= sizeof(struct rk_rng_plat),
 };
diff --git a/drivers/rng/stm32mp1_rng.c b/drivers/rng/stm32mp1_rng.c
index 30505ee..8ea00e3 100644
--- a/drivers/rng/stm32mp1_rng.c
+++ b/drivers/rng/stm32mp1_rng.c
@@ -30,7 +30,7 @@
 
 #define RNG_DR 0x08
 
-struct stm32_rng_platdata {
+struct stm32_rng_plat {
 	fdt_addr_t base;
 	struct clk clk;
 	struct reset_ctl rst;
@@ -41,7 +41,7 @@
 	int retval, i;
 	u32 sr, count, reg;
 	size_t increment;
-	struct stm32_rng_platdata *pdata = dev_get_plat(dev);
+	struct stm32_rng_plat *pdata = dev_get_plat(dev);
 
 	while (len > 0) {
 		retval = readl_poll_timeout(pdata->base + RNG_SR, sr,
@@ -80,7 +80,7 @@
 	return 0;
 }
 
-static int stm32_rng_init(struct stm32_rng_platdata *pdata)
+static int stm32_rng_init(struct stm32_rng_plat *pdata)
 {
 	int err;
 
@@ -97,7 +97,7 @@
 	return 0;
 }
 
-static int stm32_rng_cleanup(struct stm32_rng_platdata *pdata)
+static int stm32_rng_cleanup(struct stm32_rng_plat *pdata)
 {
 	writel(0, pdata->base + RNG_CR);
 
@@ -106,7 +106,7 @@
 
 static int stm32_rng_probe(struct udevice *dev)
 {
-	struct stm32_rng_platdata *pdata = dev_get_plat(dev);
+	struct stm32_rng_plat *pdata = dev_get_plat(dev);
 
 	reset_assert(&pdata->rst);
 	udelay(20);
@@ -117,14 +117,14 @@
 
 static int stm32_rng_remove(struct udevice *dev)
 {
-	struct stm32_rng_platdata *pdata = dev_get_plat(dev);
+	struct stm32_rng_plat *pdata = dev_get_plat(dev);
 
 	return stm32_rng_cleanup(pdata);
 }
 
 static int stm32_rng_of_to_plat(struct udevice *dev)
 {
-	struct stm32_rng_platdata *pdata = dev_get_plat(dev);
+	struct stm32_rng_plat *pdata = dev_get_plat(dev);
 	int err;
 
 	pdata->base = dev_read_addr(dev);
@@ -160,6 +160,6 @@
 	.ops = &stm32_rng_ops,
 	.probe = stm32_rng_probe,
 	.remove = stm32_rng_remove,
-	.plat_auto	= sizeof(struct stm32_rng_platdata),
+	.plat_auto	= sizeof(struct stm32_rng_plat),
 	.of_to_plat = stm32_rng_of_to_plat,
 };
diff --git a/drivers/rtc/pl031.c b/drivers/rtc/pl031.c
index b9797f3..a1d3766 100644
--- a/drivers/rtc/pl031.c
+++ b/drivers/rtc/pl031.c
@@ -29,20 +29,20 @@
 
 #define RTC_CR_START	(1 << 0)
 
-struct pl031_platdata {
+struct pl031_plat {
 	phys_addr_t base;
 };
 
 static inline u32 pl031_read_reg(struct udevice *dev, int reg)
 {
-	struct pl031_platdata *pdata = dev_get_plat(dev);
+	struct pl031_plat *pdata = dev_get_plat(dev);
 
 	return readl(pdata->base + reg);
 }
 
 static inline u32 pl031_write_reg(struct udevice *dev, int reg, u32 value)
 {
-	struct pl031_platdata *pdata = dev_get_plat(dev);
+	struct pl031_plat *pdata = dev_get_plat(dev);
 
 	return writel(value, pdata->base + reg);
 }
@@ -124,7 +124,7 @@
 
 static int pl031_of_to_plat(struct udevice *dev)
 {
-	struct pl031_platdata *pdata = dev_get_plat(dev);
+	struct pl031_plat *pdata = dev_get_plat(dev);
 
 	pdata->base = dev_read_addr(dev);
 
@@ -137,6 +137,6 @@
 	.of_match = pl031_ids,
 	.probe	= pl031_probe,
 	.of_to_plat = pl031_of_to_plat,
-	.plat_auto	= sizeof(struct pl031_platdata),
+	.plat_auto	= sizeof(struct pl031_plat),
 	.ops	= &pl031_ops,
 };
diff --git a/drivers/scsi/scsi-uclass.c b/drivers/scsi/scsi-uclass.c
index e9970a7..90a0add 100644
--- a/drivers/scsi/scsi-uclass.c
+++ b/drivers/scsi/scsi-uclass.c
@@ -35,5 +35,5 @@
 UCLASS_DRIVER(scsi) = {
 	.id		= UCLASS_SCSI,
 	.name		= "scsi",
-	.per_device_plat_auto	= sizeof(struct scsi_platdata),
+	.per_device_plat_auto	= sizeof(struct scsi_plat),
 };
diff --git a/drivers/scsi/scsi.c b/drivers/scsi/scsi.c
index 6e291e4..7389484 100644
--- a/drivers/scsi/scsi.c
+++ b/drivers/scsi/scsi.c
@@ -151,7 +151,7 @@
 {
 	struct blk_desc *block_dev = dev_get_uclass_plat(dev);
 	struct udevice *bdev = dev->parent;
-	struct scsi_platdata *uc_plat = dev_get_uclass_plat(bdev);
+	struct scsi_plat *uc_plat = dev_get_uclass_plat(bdev);
 	lbaint_t start, blks, max_blks;
 	uintptr_t buf_addr;
 	unsigned short smallblks = 0;
@@ -221,7 +221,7 @@
 {
 	struct blk_desc *block_dev = dev_get_uclass_plat(dev);
 	struct udevice *bdev = dev->parent;
-	struct scsi_platdata *uc_plat = dev_get_uclass_plat(bdev);
+	struct scsi_plat *uc_plat = dev_get_uclass_plat(bdev);
 	lbaint_t start, blks, max_blks;
 	uintptr_t buf_addr;
 	unsigned short smallblks;
@@ -604,7 +604,7 @@
 
 int scsi_scan_dev(struct udevice *dev, bool verbose)
 {
-	struct scsi_platdata *uc_plat; /* scsi controller plat */
+	struct scsi_plat *uc_plat; /* scsi controller plat */
 	int ret;
 	int i;
 	int lun;
diff --git a/drivers/serial/altera_jtag_uart.c b/drivers/serial/altera_jtag_uart.c
index af7fe39..0d3ccd8 100644
--- a/drivers/serial/altera_jtag_uart.c
+++ b/drivers/serial/altera_jtag_uart.c
@@ -26,7 +26,7 @@
 	u32	control;		/* Control register */
 };
 
-struct altera_jtaguart_platdata {
+struct altera_jtaguart_plat {
 	struct altera_jtaguart_regs *regs;
 };
 
@@ -37,7 +37,7 @@
 
 static int altera_jtaguart_putc(struct udevice *dev, const char ch)
 {
-	struct altera_jtaguart_platdata *plat = dev->plat;
+	struct altera_jtaguart_plat *plat = dev->plat;
 	struct altera_jtaguart_regs *const regs = plat->regs;
 	u32 st = readl(&regs->control);
 
@@ -56,7 +56,7 @@
 
 static int altera_jtaguart_pending(struct udevice *dev, bool input)
 {
-	struct altera_jtaguart_platdata *plat = dev->plat;
+	struct altera_jtaguart_plat *plat = dev->plat;
 	struct altera_jtaguart_regs *const regs = plat->regs;
 	u32 st = readl(&regs->control);
 
@@ -68,7 +68,7 @@
 
 static int altera_jtaguart_getc(struct udevice *dev)
 {
-	struct altera_jtaguart_platdata *plat = dev->plat;
+	struct altera_jtaguart_plat *plat = dev->plat;
 	struct altera_jtaguart_regs *const regs = plat->regs;
 	u32 val;
 
@@ -83,7 +83,7 @@
 static int altera_jtaguart_probe(struct udevice *dev)
 {
 #ifdef CONFIG_ALTERA_JTAG_UART_BYPASS
-	struct altera_jtaguart_platdata *plat = dev->plat;
+	struct altera_jtaguart_plat *plat = dev->plat;
 	struct altera_jtaguart_regs *const regs = plat->regs;
 
 	writel(ALTERA_JTAG_AC, &regs->control); /* clear AC flag */
@@ -93,7 +93,7 @@
 
 static int altera_jtaguart_of_to_plat(struct udevice *dev)
 {
-	struct altera_jtaguart_platdata *plat = dev_get_plat(dev);
+	struct altera_jtaguart_plat *plat = dev_get_plat(dev);
 
 	plat->regs = map_physmem(dev_read_addr(dev),
 				 sizeof(struct altera_jtaguart_regs),
@@ -119,7 +119,7 @@
 	.id	= UCLASS_SERIAL,
 	.of_match = altera_jtaguart_ids,
 	.of_to_plat = altera_jtaguart_of_to_plat,
-	.plat_auto	= sizeof(struct altera_jtaguart_platdata),
+	.plat_auto	= sizeof(struct altera_jtaguart_plat),
 	.probe = altera_jtaguart_probe,
 	.ops	= &altera_jtaguart_ops,
 };
diff --git a/drivers/serial/altera_uart.c b/drivers/serial/altera_uart.c
index fe65505..a3efa1e 100644
--- a/drivers/serial/altera_uart.c
+++ b/drivers/serial/altera_uart.c
@@ -25,14 +25,14 @@
 	u32	endofpacket;	/* End-of-packet reg */
 };
 
-struct altera_uart_platdata {
+struct altera_uart_plat {
 	struct altera_uart_regs *regs;
 	unsigned int uartclk;
 };
 
 static int altera_uart_setbrg(struct udevice *dev, int baudrate)
 {
-	struct altera_uart_platdata *plat = dev->plat;
+	struct altera_uart_plat *plat = dev->plat;
 	struct altera_uart_regs *const regs = plat->regs;
 	u32 div;
 
@@ -44,7 +44,7 @@
 
 static int altera_uart_putc(struct udevice *dev, const char ch)
 {
-	struct altera_uart_platdata *plat = dev->plat;
+	struct altera_uart_plat *plat = dev->plat;
 	struct altera_uart_regs *const regs = plat->regs;
 
 	if (!(readl(&regs->status) & ALTERA_UART_TRDY))
@@ -57,7 +57,7 @@
 
 static int altera_uart_pending(struct udevice *dev, bool input)
 {
-	struct altera_uart_platdata *plat = dev->plat;
+	struct altera_uart_plat *plat = dev->plat;
 	struct altera_uart_regs *const regs = plat->regs;
 	u32 st = readl(&regs->status);
 
@@ -69,7 +69,7 @@
 
 static int altera_uart_getc(struct udevice *dev)
 {
-	struct altera_uart_platdata *plat = dev->plat;
+	struct altera_uart_plat *plat = dev->plat;
 	struct altera_uart_regs *const regs = plat->regs;
 
 	if (!(readl(&regs->status) & ALTERA_UART_RRDY))
@@ -85,7 +85,7 @@
 
 static int altera_uart_of_to_plat(struct udevice *dev)
 {
-	struct altera_uart_platdata *plat = dev_get_plat(dev);
+	struct altera_uart_plat *plat = dev_get_plat(dev);
 
 	plat->regs = map_physmem(dev_read_addr(dev),
 				 sizeof(struct altera_uart_regs),
@@ -112,7 +112,7 @@
 	.id	= UCLASS_SERIAL,
 	.of_match = altera_uart_ids,
 	.of_to_plat = altera_uart_of_to_plat,
-	.plat_auto	= sizeof(struct altera_uart_platdata),
+	.plat_auto	= sizeof(struct altera_uart_plat),
 	.probe = altera_uart_probe,
 	.ops	= &altera_uart_ops,
 };
diff --git a/drivers/serial/atmel_usart.c b/drivers/serial/atmel_usart.c
index 463bede..7eabf76 100644
--- a/drivers/serial/atmel_usart.c
+++ b/drivers/serial/atmel_usart.c
@@ -262,7 +262,7 @@
 
 static int atmel_serial_probe(struct udevice *dev)
 {
-	struct atmel_serial_platdata *plat = dev->plat;
+	struct atmel_serial_plat *plat = dev->plat;
 	struct atmel_serial_priv *priv = dev_get_priv(dev);
 	int ret;
 #if CONFIG_IS_ENABLED(OF_CONTROL)
@@ -304,7 +304,7 @@
 	.id	= UCLASS_SERIAL,
 #if CONFIG_IS_ENABLED(OF_CONTROL)
 	.of_match = atmel_serial_ids,
-	.plat_auto	= sizeof(struct atmel_serial_platdata),
+	.plat_auto	= sizeof(struct atmel_serial_plat),
 #endif
 	.probe = atmel_serial_probe,
 	.ops	= &atmel_serial_ops,
diff --git a/drivers/serial/lpc32xx_hsuart.c b/drivers/serial/lpc32xx_hsuart.c
index 4e34643..d39a3c0 100644
--- a/drivers/serial/lpc32xx_hsuart.c
+++ b/drivers/serial/lpc32xx_hsuart.c
@@ -85,7 +85,7 @@
 
 static int lpc32xx_hsuart_probe(struct udevice *dev)
 {
-	struct lpc32xx_hsuart_platdata *plat = dev_get_plat(dev);
+	struct lpc32xx_hsuart_plat *plat = dev_get_plat(dev);
 	struct lpc32xx_hsuart_priv *priv = dev_get_priv(dev);
 
 	priv->hsuart = (struct hsuart_regs *)plat->base;
diff --git a/drivers/serial/ns16550.c b/drivers/serial/ns16550.c
index 6f80e02..8dd81ad 100644
--- a/drivers/serial/ns16550.c
+++ b/drivers/serial/ns16550.c
@@ -103,7 +103,7 @@
  * on a platform
  */
 #ifdef CONFIG_NS16550_DYNAMIC
-static void serial_out_dynamic(struct ns16550_platdata *plat, u8 *addr,
+static void serial_out_dynamic(struct ns16550_plat *plat, u8 *addr,
 			       int value)
 {
 	if (plat->flags & NS16550_FLAG_IO) {
@@ -124,7 +124,7 @@
 	}
 }
 
-static int serial_in_dynamic(struct ns16550_platdata *plat, u8 *addr)
+static int serial_in_dynamic(struct ns16550_plat *plat, u8 *addr)
 {
 	if (plat->flags & NS16550_FLAG_IO) {
 		return inb(addr);
@@ -144,12 +144,12 @@
 	}
 }
 #else
-static inline void serial_out_dynamic(struct ns16550_platdata *plat, u8 *addr,
+static inline void serial_out_dynamic(struct ns16550_plat *plat, u8 *addr,
 				      int value)
 {
 }
 
-static inline int serial_in_dynamic(struct ns16550_platdata *plat, u8 *addr)
+static inline int serial_in_dynamic(struct ns16550_plat *plat, u8 *addr)
 {
 	return 0;
 }
@@ -158,7 +158,7 @@
 
 static void ns16550_writeb(NS16550_t port, int offset, int value)
 {
-	struct ns16550_platdata *plat = port->plat;
+	struct ns16550_plat *plat = port->plat;
 	unsigned char *addr;
 
 	offset *= 1 << plat->reg_shift;
@@ -172,7 +172,7 @@
 
 static int ns16550_readb(NS16550_t port, int offset)
 {
-	struct ns16550_platdata *plat = port->plat;
+	struct ns16550_plat *plat = port->plat;
 	unsigned char *addr;
 
 	offset *= 1 << plat->reg_shift;
@@ -186,7 +186,7 @@
 
 static u32 ns16550_getfcr(NS16550_t port)
 {
-	struct ns16550_platdata *plat = port->plat;
+	struct ns16550_plat *plat = port->plat;
 
 	return plat->fcr;
 }
@@ -418,7 +418,7 @@
 static int ns16550_serial_setbrg(struct udevice *dev, int baudrate)
 {
 	struct NS16550 *const com_port = dev_get_priv(dev);
-	struct ns16550_platdata *plat = com_port->plat;
+	struct ns16550_plat *plat = com_port->plat;
 	int clock_divisor;
 
 	clock_divisor = ns16550_calc_divisor(com_port, plat->clock, baudrate);
@@ -465,7 +465,7 @@
 				  struct serial_device_info *info)
 {
 	struct NS16550 *const com_port = dev_get_priv(dev);
-	struct ns16550_platdata *plat = com_port->plat;
+	struct ns16550_plat *plat = com_port->plat;
 
 	info->type = SERIAL_CHIP_16550_COMPATIBLE;
 #ifdef CONFIG_SYS_NS16550_PORT_MAPPED
@@ -482,7 +482,7 @@
 	return 0;
 }
 
-static int ns16550_serial_assign_base(struct ns16550_platdata *plat, ulong base)
+static int ns16550_serial_assign_base(struct ns16550_plat *plat, ulong base)
 {
 	if (base == FDT_ADDR_T_NONE)
 		return -EINVAL;
@@ -498,7 +498,7 @@
 
 int ns16550_serial_probe(struct udevice *dev)
 {
-	struct ns16550_platdata *plat = dev->plat;
+	struct ns16550_plat *plat = dev->plat;
 	struct NS16550 *const com_port = dev_get_priv(dev);
 	struct reset_ctl_bulk reset_bulk;
 	fdt_addr_t addr;
@@ -535,7 +535,7 @@
 #if CONFIG_IS_ENABLED(OF_CONTROL) && !CONFIG_IS_ENABLED(OF_PLATDATA)
 int ns16550_serial_of_to_plat(struct udevice *dev)
 {
-	struct ns16550_platdata *plat = dev->plat;
+	struct ns16550_plat *plat = dev->plat;
 	const u32 port_type = dev_get_driver_data(dev);
 	fdt_addr_t addr;
 	struct clk clk;
@@ -611,7 +611,7 @@
 #if CONFIG_IS_ENABLED(OF_CONTROL) && !CONFIG_IS_ENABLED(OF_PLATDATA)
 	.of_match = ns16550_serial_ids,
 	.of_to_plat = ns16550_serial_of_to_plat,
-	.plat_auto	= sizeof(struct ns16550_platdata),
+	.plat_auto	= sizeof(struct ns16550_plat),
 #endif
 	.priv_auto	= sizeof(struct NS16550),
 	.probe = ns16550_serial_probe,
diff --git a/drivers/serial/sandbox.c b/drivers/serial/sandbox.c
index 2deb14d..c7d5390 100644
--- a/drivers/serial/sandbox.c
+++ b/drivers/serial/sandbox.c
@@ -21,7 +21,7 @@
 
 DECLARE_GLOBAL_DATA_PTR;
 
-struct sandbox_serial_platdata {
+struct sandbox_serial_plat {
 	int colour;	/* Text colour to use for output, -1 for none */
 };
 
@@ -72,7 +72,7 @@
 
 static int sandbox_serial_remove(struct udevice *dev)
 {
-	struct sandbox_serial_platdata *plat = dev->plat;
+	struct sandbox_serial_plat *plat = dev->plat;
 
 	if (plat->colour != -1)
 		output_ansi_reset();
@@ -83,7 +83,7 @@
 static int sandbox_serial_putc(struct udevice *dev, const char ch)
 {
 	struct sandbox_serial_priv *priv = dev_get_priv(dev);
-	struct sandbox_serial_platdata *plat = dev->plat;
+	struct sandbox_serial_plat *plat = dev->plat;
 
 	/* With of-platdata we don't real the colour correctly, so disable it */
 	if (!CONFIG_IS_ENABLED(OF_PLATDATA) && priv->start_of_line &&
@@ -203,7 +203,7 @@
 
 static int sandbox_serial_of_to_plat(struct udevice *dev)
 {
-	struct sandbox_serial_platdata *plat = dev->plat;
+	struct sandbox_serial_plat *plat = dev->plat;
 	const char *colour;
 	int i;
 
@@ -242,7 +242,7 @@
 	.id	= UCLASS_SERIAL,
 	.of_match = sandbox_serial_ids,
 	.of_to_plat = sandbox_serial_of_to_plat,
-	.plat_auto	= sizeof(struct sandbox_serial_platdata),
+	.plat_auto	= sizeof(struct sandbox_serial_plat),
 	.priv_auto	= sizeof(struct sandbox_serial_priv),
 	.probe = sandbox_serial_probe,
 	.remove = sandbox_serial_remove,
@@ -251,7 +251,7 @@
 };
 
 #if !CONFIG_IS_ENABLED(OF_PLATDATA)
-static const struct sandbox_serial_platdata platdata_non_fdt = {
+static const struct sandbox_serial_plat platdata_non_fdt = {
 	.colour = -1,
 };
 
diff --git a/drivers/serial/serial_arc.c b/drivers/serial/serial_arc.c
index dae55ea..022e377 100644
--- a/drivers/serial/serial_arc.c
+++ b/drivers/serial/serial_arc.c
@@ -25,7 +25,7 @@
 };
 
 
-struct arc_serial_platdata {
+struct arc_serial_plat {
 	struct arc_serial_regs *reg;
 	unsigned int uartclk;
 };
@@ -37,7 +37,7 @@
 
 static int arc_serial_setbrg(struct udevice *dev, int baudrate)
 {
-	struct arc_serial_platdata *plat = dev->plat;
+	struct arc_serial_plat *plat = dev->plat;
 	struct arc_serial_regs *const regs = plat->reg;
 	int arc_console_baud = gd->cpu_clk / (baudrate * 4) - 1;
 
@@ -49,7 +49,7 @@
 
 static int arc_serial_putc(struct udevice *dev, const char c)
 {
-	struct arc_serial_platdata *plat = dev->plat;
+	struct arc_serial_plat *plat = dev->plat;
 	struct arc_serial_regs *const regs = plat->reg;
 
 	while (!(readb(&regs->status) & UART_TXEMPTY))
@@ -67,7 +67,7 @@
 
 static int arc_serial_pending(struct udevice *dev, bool input)
 {
-	struct arc_serial_platdata *plat = dev->plat;
+	struct arc_serial_plat *plat = dev->plat;
 	struct arc_serial_regs *const regs = plat->reg;
 	uint32_t status = readb(&regs->status);
 
@@ -79,7 +79,7 @@
 
 static int arc_serial_getc(struct udevice *dev)
 {
-	struct arc_serial_platdata *plat = dev->plat;
+	struct arc_serial_plat *plat = dev->plat;
 	struct arc_serial_regs *const regs = plat->reg;
 
 	while (!arc_serial_tstc(regs))
@@ -111,7 +111,7 @@
 
 static int arc_serial_of_to_plat(struct udevice *dev)
 {
-	struct arc_serial_platdata *plat = dev_get_plat(dev);
+	struct arc_serial_plat *plat = dev_get_plat(dev);
 	DECLARE_GLOBAL_DATA_PTR;
 
 	plat->reg = dev_read_addr_ptr(dev);
@@ -126,7 +126,7 @@
 	.id	= UCLASS_SERIAL,
 	.of_match = arc_serial_ids,
 	.of_to_plat = arc_serial_of_to_plat,
-	.plat_auto	= sizeof(struct arc_serial_platdata),
+	.plat_auto	= sizeof(struct arc_serial_plat),
 	.probe = arc_serial_probe,
 	.ops	= &arc_serial_ops,
 };
diff --git a/drivers/serial/serial_bcm283x_mu.c b/drivers/serial/serial_bcm283x_mu.c
index a53288d..58fa722 100644
--- a/drivers/serial/serial_bcm283x_mu.c
+++ b/drivers/serial/serial_bcm283x_mu.c
@@ -55,7 +55,7 @@
 
 static int bcm283x_mu_serial_setbrg(struct udevice *dev, int baudrate)
 {
-	struct bcm283x_mu_serial_platdata *plat = dev_get_plat(dev);
+	struct bcm283x_mu_serial_plat *plat = dev_get_plat(dev);
 	struct bcm283x_mu_priv *priv = dev_get_priv(dev);
 	struct bcm283x_mu_regs *regs = priv->regs;
 	u32 divider;
@@ -158,7 +158,7 @@
 
 static int bcm283x_mu_serial_probe(struct udevice *dev)
 {
-	struct bcm283x_mu_serial_platdata *plat = dev_get_plat(dev);
+	struct bcm283x_mu_serial_plat *plat = dev_get_plat(dev);
 	struct bcm283x_mu_priv *priv = dev_get_priv(dev);
 	fdt_addr_t addr;
 
@@ -194,7 +194,7 @@
 	.name = "serial_bcm283x_mu",
 	.id = UCLASS_SERIAL,
 	.of_match = of_match_ptr(bcm283x_mu_serial_id),
-	.plat_auto	= sizeof(struct bcm283x_mu_serial_platdata),
+	.plat_auto	= sizeof(struct bcm283x_mu_serial_plat),
 	.probe = bcm283x_mu_serial_probe,
 	.ops = &bcm283x_mu_serial_ops,
 #if !CONFIG_IS_ENABLED(OF_CONTROL) || CONFIG_IS_ENABLED(OF_BOARD)
diff --git a/drivers/serial/serial_bcm283x_pl011.c b/drivers/serial/serial_bcm283x_pl011.c
index 967f842..2d2e970 100644
--- a/drivers/serial/serial_bcm283x_pl011.c
+++ b/drivers/serial/serial_bcm283x_pl011.c
@@ -35,7 +35,7 @@
 
 static int bcm283x_pl011_serial_probe(struct udevice *dev)
 {
-	struct pl01x_serial_platdata *plat = dev_get_plat(dev);
+	struct pl01x_serial_plat *plat = dev_get_plat(dev);
 	int ret;
 
 	/* Don't spawn the device if it's not muxed */
@@ -92,7 +92,7 @@
 	.id	= UCLASS_SERIAL,
 	.of_match = of_match_ptr(bcm283x_pl011_serial_id),
 	.probe	= bcm283x_pl011_serial_probe,
-	.plat_auto	= sizeof(struct pl01x_serial_platdata),
+	.plat_auto	= sizeof(struct pl01x_serial_plat),
 	.ops	= &bcm283x_pl011_serial_ops,
 #if !CONFIG_IS_ENABLED(OF_CONTROL) || CONFIG_IS_ENABLED(OF_BOARD)
 	.flags	= DM_FLAG_PRE_RELOC,
diff --git a/drivers/serial/serial_coreboot.c b/drivers/serial/serial_coreboot.c
index ece27ac..904e1b3 100644
--- a/drivers/serial/serial_coreboot.c
+++ b/drivers/serial/serial_coreboot.c
@@ -13,7 +13,7 @@
 
 static int coreboot_of_to_plat(struct udevice *dev)
 {
-	struct ns16550_platdata *plat = dev_get_plat(dev);
+	struct ns16550_plat *plat = dev_get_plat(dev);
 	struct cb_serial *cb_info = lib_sysinfo.serial;
 
 	plat->base = cb_info->baseaddr;
@@ -38,7 +38,7 @@
 	.id	= UCLASS_SERIAL,
 	.of_match	= coreboot_serial_ids,
 	.priv_auto	= sizeof(struct NS16550),
-	.plat_auto	= sizeof(struct ns16550_platdata),
+	.plat_auto	= sizeof(struct ns16550_plat),
 	.of_to_plat  = coreboot_of_to_plat,
 	.probe	= ns16550_serial_probe,
 	.ops	= &ns16550_serial_ops,
diff --git a/drivers/serial/serial_intel_mid.c b/drivers/serial/serial_intel_mid.c
index 55da805..be9bf66 100644
--- a/drivers/serial/serial_intel_mid.c
+++ b/drivers/serial/serial_intel_mid.c
@@ -21,7 +21,7 @@
 #define UART_MUL	0x34
 #define UART_DIV	0x38
 
-static void mid_writel(struct ns16550_platdata *plat, int offset, int value)
+static void mid_writel(struct ns16550_plat *plat, int offset, int value)
 {
 	unsigned char *addr;
 
@@ -33,7 +33,7 @@
 
 static int mid_serial_probe(struct udevice *dev)
 {
-	struct ns16550_platdata *plat = dev_get_plat(dev);
+	struct ns16550_plat *plat = dev_get_plat(dev);
 
 	/*
 	 * Initialize fractional divider correctly for Intel Edison
@@ -60,7 +60,7 @@
 	.id	= UCLASS_SERIAL,
 	.of_match = mid_serial_ids,
 	.of_to_plat = ns16550_serial_of_to_plat,
-	.plat_auto	= sizeof(struct ns16550_platdata),
+	.plat_auto	= sizeof(struct ns16550_plat),
 	.priv_auto	= sizeof(struct NS16550),
 	.probe	= mid_serial_probe,
 	.ops	= &ns16550_serial_ops,
diff --git a/drivers/serial/serial_linflexuart.c b/drivers/serial/serial_linflexuart.c
index 4f8867a..ced0057 100644
--- a/drivers/serial/serial_linflexuart.c
+++ b/drivers/serial/serial_linflexuart.c
@@ -115,7 +115,7 @@
 	return 0;
 }
 
-struct linflex_serial_platdata {
+struct linflex_serial_plat {
 	struct linflex_fsl *base_addr;
 	u8 port_id; /* do we need this? */
 };
@@ -168,7 +168,7 @@
 
 static int linflex_serial_probe(struct udevice *dev)
 {
-	struct linflex_serial_platdata *plat = dev->plat;
+	struct linflex_serial_plat *plat = dev->plat;
 	struct linflex_serial_priv *priv = dev_get_priv(dev);
 
 	priv->lfuart = (struct linflex_fsl *)plat->base_addr;
diff --git a/drivers/serial/serial_lpuart.c b/drivers/serial/serial_lpuart.c
index 5636233..5beb5f2 100644
--- a/drivers/serial/serial_lpuart.c
+++ b/drivers/serial/serial_lpuart.c
@@ -74,7 +74,7 @@
 	DEV_IMXRT,
 };
 
-struct lpuart_serial_platdata {
+struct lpuart_serial_plat {
 	void *reg;
 	enum lpuart_devtype devtype;
 	ulong flags;
@@ -138,7 +138,7 @@
 
 static bool is_lpuart32(struct udevice *dev)
 {
-	struct lpuart_serial_platdata *plat = dev->plat;
+	struct lpuart_serial_plat *plat = dev->plat;
 
 	return plat->flags & LPUART_FLAG_REGMAP_32BIT_REG;
 }
@@ -146,7 +146,7 @@
 static void _lpuart_serial_setbrg(struct udevice *dev,
 				  int baudrate)
 {
-	struct lpuart_serial_platdata *plat = dev_get_plat(dev);
+	struct lpuart_serial_plat *plat = dev_get_plat(dev);
 	struct lpuart_fsl *base = plat->reg;
 	u32 clk;
 	u16 sbr;
@@ -167,7 +167,7 @@
 	__raw_writeb(sbr & 0xff, &base->ubdl);
 }
 
-static int _lpuart_serial_getc(struct lpuart_serial_platdata *plat)
+static int _lpuart_serial_getc(struct lpuart_serial_plat *plat)
 {
 	struct lpuart_fsl *base = plat->reg;
 	while (!(__raw_readb(&base->us1) & (US1_RDRF | US1_OR)))
@@ -178,7 +178,7 @@
 	return __raw_readb(&base->ud);
 }
 
-static void _lpuart_serial_putc(struct lpuart_serial_platdata *plat,
+static void _lpuart_serial_putc(struct lpuart_serial_plat *plat,
 				const char c)
 {
 	struct lpuart_fsl *base = plat->reg;
@@ -190,7 +190,7 @@
 }
 
 /* Test whether a character is in the RX buffer */
-static int _lpuart_serial_tstc(struct lpuart_serial_platdata *plat)
+static int _lpuart_serial_tstc(struct lpuart_serial_plat *plat)
 {
 	struct lpuart_fsl *base = plat->reg;
 
@@ -206,7 +206,7 @@
  */
 static int _lpuart_serial_init(struct udevice *dev)
 {
-	struct lpuart_serial_platdata *plat = dev_get_plat(dev);
+	struct lpuart_serial_plat *plat = dev_get_plat(dev);
 	struct lpuart_fsl *base = (struct lpuart_fsl *)plat->reg;
 	u8 ctrl;
 
@@ -235,7 +235,7 @@
 static void _lpuart32_serial_setbrg_7ulp(struct udevice *dev,
 					 int baudrate)
 {
-	struct lpuart_serial_platdata *plat = dev_get_plat(dev);
+	struct lpuart_serial_plat *plat = dev_get_plat(dev);
 	struct lpuart_fsl_reg32 *base = plat->reg;
 	u32 sbr, osr, baud_diff, tmp_osr, tmp_sbr, tmp_diff, tmp;
 	u32 clk;
@@ -304,7 +304,7 @@
 static void _lpuart32_serial_setbrg(struct udevice *dev,
 				    int baudrate)
 {
-	struct lpuart_serial_platdata *plat = dev_get_plat(dev);
+	struct lpuart_serial_plat *plat = dev_get_plat(dev);
 	struct lpuart_fsl_reg32 *base = plat->reg;
 	u32 clk;
 	u32 sbr;
@@ -324,7 +324,7 @@
 	lpuart_write32(plat->flags, &base->baud, sbr);
 }
 
-static int _lpuart32_serial_getc(struct lpuart_serial_platdata *plat)
+static int _lpuart32_serial_getc(struct lpuart_serial_plat *plat)
 {
 	struct lpuart_fsl_reg32 *base = plat->reg;
 	u32 stat, val;
@@ -345,7 +345,7 @@
 	return val & 0x3ff;
 }
 
-static void _lpuart32_serial_putc(struct lpuart_serial_platdata *plat,
+static void _lpuart32_serial_putc(struct lpuart_serial_plat *plat,
 				  const char c)
 {
 	struct lpuart_fsl_reg32 *base = plat->reg;
@@ -367,7 +367,7 @@
 }
 
 /* Test whether a character is in the RX buffer */
-static int _lpuart32_serial_tstc(struct lpuart_serial_platdata *plat)
+static int _lpuart32_serial_tstc(struct lpuart_serial_plat *plat)
 {
 	struct lpuart_fsl_reg32 *base = plat->reg;
 	u32 water;
@@ -386,7 +386,7 @@
  */
 static int _lpuart32_serial_init(struct udevice *dev)
 {
-	struct lpuart_serial_platdata *plat = dev_get_plat(dev);
+	struct lpuart_serial_plat *plat = dev_get_plat(dev);
 	struct lpuart_fsl_reg32 *base = (struct lpuart_fsl_reg32 *)plat->reg;
 	u32 val, tx_fifo_size;
 
@@ -428,7 +428,7 @@
 
 static int lpuart_serial_setbrg(struct udevice *dev, int baudrate)
 {
-	struct lpuart_serial_platdata *plat = dev_get_plat(dev);
+	struct lpuart_serial_plat *plat = dev_get_plat(dev);
 
 	if (is_lpuart32(dev)) {
 		if (plat->devtype == DEV_MX7ULP || plat->devtype == DEV_IMX8 ||
@@ -445,7 +445,7 @@
 
 static int lpuart_serial_getc(struct udevice *dev)
 {
-	struct lpuart_serial_platdata *plat = dev->plat;
+	struct lpuart_serial_plat *plat = dev->plat;
 
 	if (is_lpuart32(dev))
 		return _lpuart32_serial_getc(plat);
@@ -455,7 +455,7 @@
 
 static int lpuart_serial_putc(struct udevice *dev, const char c)
 {
-	struct lpuart_serial_platdata *plat = dev->plat;
+	struct lpuart_serial_plat *plat = dev->plat;
 
 	if (is_lpuart32(dev))
 		_lpuart32_serial_putc(plat, c);
@@ -467,7 +467,7 @@
 
 static int lpuart_serial_pending(struct udevice *dev, bool input)
 {
-	struct lpuart_serial_platdata *plat = dev->plat;
+	struct lpuart_serial_plat *plat = dev->plat;
 	struct lpuart_fsl *reg = plat->reg;
 	struct lpuart_fsl_reg32 *reg32 = plat->reg;
 	u32 stat;
@@ -513,7 +513,7 @@
 
 static int lpuart_serial_of_to_plat(struct udevice *dev)
 {
-	struct lpuart_serial_platdata *plat = dev->plat;
+	struct lpuart_serial_plat *plat = dev->plat;
 	const void *blob = gd->fdt_blob;
 	int node = dev_of_offset(dev);
 	fdt_addr_t addr;
@@ -567,7 +567,7 @@
 	.id	= UCLASS_SERIAL,
 	.of_match = lpuart_serial_ids,
 	.of_to_plat = lpuart_serial_of_to_plat,
-	.plat_auto	= sizeof(struct lpuart_serial_platdata),
+	.plat_auto	= sizeof(struct lpuart_serial_plat),
 	.probe = lpuart_serial_probe,
 	.ops	= &lpuart_serial_ops,
 };
diff --git a/drivers/serial/serial_mcf.c b/drivers/serial/serial_mcf.c
index 12b2df2..a78a7ec 100644
--- a/drivers/serial/serial_mcf.c
+++ b/drivers/serial/serial_mcf.c
@@ -83,7 +83,7 @@
 
 static int coldfire_serial_probe(struct udevice *dev)
 {
-	struct coldfire_serial_platdata *plat = dev->plat;
+	struct coldfire_serial_plat *plat = dev->plat;
 
 	plat->port = dev->seq;
 
@@ -93,7 +93,7 @@
 
 static int coldfire_serial_putc(struct udevice *dev, const char ch)
 {
-	struct coldfire_serial_platdata *plat = dev->plat;
+	struct coldfire_serial_plat *plat = dev->plat;
 	uart_t *uart = (uart_t *)plat->base;
 
 	/* Wait for last character to go. */
@@ -107,7 +107,7 @@
 
 static int coldfire_serial_getc(struct udevice *dev)
 {
-	struct coldfire_serial_platdata *plat = dev->plat;
+	struct coldfire_serial_plat *plat = dev->plat;
 	uart_t *uart = (uart_t *)(plat->base);
 
 	/* Wait for a character to arrive. */
@@ -119,7 +119,7 @@
 
 int coldfire_serial_setbrg(struct udevice *dev, int baudrate)
 {
-	struct coldfire_serial_platdata *plat = dev->plat;
+	struct coldfire_serial_plat *plat = dev->plat;
 	uart_t *uart = (uart_t *)(plat->base);
 
 	mcf_serial_setbrg_common(uart, baudrate);
@@ -129,7 +129,7 @@
 
 static int coldfire_serial_pending(struct udevice *dev, bool input)
 {
-	struct coldfire_serial_platdata *plat = dev->plat;
+	struct coldfire_serial_plat *plat = dev->plat;
 	uart_t *uart = (uart_t *)(plat->base);
 
 	if (input)
@@ -142,7 +142,7 @@
 
 static int coldfire_of_to_plat(struct udevice *dev)
 {
-	struct coldfire_serial_platdata *plat = dev_get_plat(dev);
+	struct coldfire_serial_plat *plat = dev_get_plat(dev);
 	fdt_addr_t addr_base;
 
 	addr_base = dev_read_addr(dev);
@@ -172,7 +172,7 @@
 	.id = UCLASS_SERIAL,
 	.of_match = coldfire_serial_ids,
 	.of_to_plat = coldfire_of_to_plat,
-	.plat_auto	= sizeof(struct coldfire_serial_platdata),
+	.plat_auto	= sizeof(struct coldfire_serial_plat),
 	.probe = coldfire_serial_probe,
 	.ops = &coldfire_serial_ops,
 	.flags = DM_FLAG_PRE_RELOC,
diff --git a/drivers/serial/serial_meson.c b/drivers/serial/serial_meson.c
index ac3727d..40d9bfe 100644
--- a/drivers/serial/serial_meson.c
+++ b/drivers/serial/serial_meson.c
@@ -19,7 +19,7 @@
 	u32 misc;
 };
 
-struct meson_serial_platdata {
+struct meson_serial_plat {
 	struct meson_uart *reg;
 };
 
@@ -57,7 +57,7 @@
 
 static int meson_serial_probe(struct udevice *dev)
 {
-	struct meson_serial_platdata *plat = dev->plat;
+	struct meson_serial_plat *plat = dev->plat;
 	struct meson_uart *const uart = plat->reg;
 
 	meson_serial_init(uart);
@@ -67,7 +67,7 @@
 
 static void meson_serial_rx_error(struct udevice *dev)
 {
-	struct meson_serial_platdata *plat = dev->plat;
+	struct meson_serial_plat *plat = dev->plat;
 	struct meson_uart *const uart = plat->reg;
 	u32 val = readl(&uart->control);
 
@@ -83,7 +83,7 @@
 
 static int meson_serial_getc(struct udevice *dev)
 {
-	struct meson_serial_platdata *plat = dev->plat;
+	struct meson_serial_plat *plat = dev->plat;
 	struct meson_uart *const uart = plat->reg;
 	uint32_t status = readl(&uart->status);
 
@@ -100,7 +100,7 @@
 
 static int meson_serial_putc(struct udevice *dev, const char ch)
 {
-	struct meson_serial_platdata *plat = dev->plat;
+	struct meson_serial_plat *plat = dev->plat;
 	struct meson_uart *const uart = plat->reg;
 
 	if (readl(&uart->status) & AML_UART_TX_FULL)
@@ -113,7 +113,7 @@
 
 static int meson_serial_pending(struct udevice *dev, bool input)
 {
-	struct meson_serial_platdata *plat = dev->plat;
+	struct meson_serial_plat *plat = dev->plat;
 	struct meson_uart *const uart = plat->reg;
 	uint32_t status = readl(&uart->status);
 
@@ -138,7 +138,7 @@
 
 static int meson_serial_of_to_plat(struct udevice *dev)
 {
-	struct meson_serial_platdata *plat = dev->plat;
+	struct meson_serial_plat *plat = dev->plat;
 	fdt_addr_t addr;
 
 	addr = dev_read_addr(dev);
@@ -169,7 +169,7 @@
 	.probe		= meson_serial_probe,
 	.ops		= &meson_serial_ops,
 	.of_to_plat = meson_serial_of_to_plat,
-	.plat_auto	= sizeof(struct meson_serial_platdata),
+	.plat_auto	= sizeof(struct meson_serial_plat),
 };
 
 #ifdef CONFIG_DEBUG_UART_MESON
diff --git a/drivers/serial/serial_mvebu_a3700.c b/drivers/serial/serial_mvebu_a3700.c
index f4676f0..5a1d40e 100644
--- a/drivers/serial/serial_mvebu_a3700.c
+++ b/drivers/serial/serial_mvebu_a3700.c
@@ -8,7 +8,7 @@
 #include <serial.h>
 #include <asm/io.h>
 
-struct mvebu_platdata {
+struct mvebu_plat {
 	void __iomem *base;
 };
 
@@ -32,7 +32,7 @@
 
 static int mvebu_serial_putc(struct udevice *dev, const char ch)
 {
-	struct mvebu_platdata *plat = dev_get_plat(dev);
+	struct mvebu_plat *plat = dev_get_plat(dev);
 	void __iomem *base = plat->base;
 
 	while (readl(base + UART_STATUS_REG) & UART_STATUS_TXFIFO_FULL)
@@ -45,7 +45,7 @@
 
 static int mvebu_serial_getc(struct udevice *dev)
 {
-	struct mvebu_platdata *plat = dev_get_plat(dev);
+	struct mvebu_plat *plat = dev_get_plat(dev);
 	void __iomem *base = plat->base;
 
 	while (!(readl(base + UART_STATUS_REG) & UART_STATUS_RX_RDY))
@@ -56,7 +56,7 @@
 
 static int mvebu_serial_pending(struct udevice *dev, bool input)
 {
-	struct mvebu_platdata *plat = dev_get_plat(dev);
+	struct mvebu_plat *plat = dev_get_plat(dev);
 	void __iomem *base = plat->base;
 
 	if (readl(base + UART_STATUS_REG) & UART_STATUS_RX_RDY)
@@ -67,7 +67,7 @@
 
 static int mvebu_serial_setbrg(struct udevice *dev, int baudrate)
 {
-	struct mvebu_platdata *plat = dev_get_plat(dev);
+	struct mvebu_plat *plat = dev_get_plat(dev);
 	void __iomem *base = plat->base;
 
 	/*
@@ -87,7 +87,7 @@
 
 static int mvebu_serial_probe(struct udevice *dev)
 {
-	struct mvebu_platdata *plat = dev_get_plat(dev);
+	struct mvebu_plat *plat = dev_get_plat(dev);
 	void __iomem *base = plat->base;
 
 	/* reset FIFOs */
@@ -102,7 +102,7 @@
 
 static int mvebu_serial_of_to_plat(struct udevice *dev)
 {
-	struct mvebu_platdata *plat = dev_get_plat(dev);
+	struct mvebu_plat *plat = dev_get_plat(dev);
 
 	plat->base = dev_read_addr_ptr(dev);
 
@@ -126,7 +126,7 @@
 	.id	= UCLASS_SERIAL,
 	.of_match = mvebu_serial_ids,
 	.of_to_plat = mvebu_serial_of_to_plat,
-	.plat_auto	= sizeof(struct mvebu_platdata),
+	.plat_auto	= sizeof(struct mvebu_plat),
 	.probe	= mvebu_serial_probe,
 	.ops	= &mvebu_serial_ops,
 };
diff --git a/drivers/serial/serial_mxc.c b/drivers/serial/serial_mxc.c
index 9602ddc..2603fa8 100644
--- a/drivers/serial/serial_mxc.c
+++ b/drivers/serial/serial_mxc.c
@@ -264,7 +264,7 @@
 
 int mxc_serial_setbrg(struct udevice *dev, int baudrate)
 {
-	struct mxc_serial_platdata *plat = dev->plat;
+	struct mxc_serial_plat *plat = dev->plat;
 	u32 clk = imx_get_uartclk();
 
 	_mxc_serial_setbrg(plat->reg, clk, baudrate, plat->use_dte);
@@ -274,7 +274,7 @@
 
 static int mxc_serial_probe(struct udevice *dev)
 {
-	struct mxc_serial_platdata *plat = dev->plat;
+	struct mxc_serial_plat *plat = dev->plat;
 
 	_mxc_serial_init(plat->reg, plat->use_dte);
 
@@ -283,7 +283,7 @@
 
 static int mxc_serial_getc(struct udevice *dev)
 {
-	struct mxc_serial_platdata *plat = dev->plat;
+	struct mxc_serial_plat *plat = dev->plat;
 	struct mxc_uart *const uart = plat->reg;
 
 	if (readl(&uart->ts) & UTS_RXEMPTY)
@@ -294,7 +294,7 @@
 
 static int mxc_serial_putc(struct udevice *dev, const char ch)
 {
-	struct mxc_serial_platdata *plat = dev->plat;
+	struct mxc_serial_plat *plat = dev->plat;
 	struct mxc_uart *const uart = plat->reg;
 
 	if (!(readl(&uart->ts) & UTS_TXEMPTY))
@@ -307,7 +307,7 @@
 
 static int mxc_serial_pending(struct udevice *dev, bool input)
 {
-	struct mxc_serial_platdata *plat = dev->plat;
+	struct mxc_serial_plat *plat = dev->plat;
 	struct mxc_uart *const uart = plat->reg;
 	uint32_t sr2 = readl(&uart->sr2);
 
@@ -327,7 +327,7 @@
 #if CONFIG_IS_ENABLED(OF_CONTROL)
 static int mxc_serial_of_to_plat(struct udevice *dev)
 {
-	struct mxc_serial_platdata *plat = dev->plat;
+	struct mxc_serial_plat *plat = dev->plat;
 	fdt_addr_t addr;
 
 	addr = dev_read_addr(dev);
@@ -358,7 +358,7 @@
 #if CONFIG_IS_ENABLED(OF_CONTROL)
 	.of_match = mxc_serial_ids,
 	.of_to_plat = mxc_serial_of_to_plat,
-	.plat_auto	= sizeof(struct mxc_serial_platdata),
+	.plat_auto	= sizeof(struct mxc_serial_plat),
 #endif
 	.probe = mxc_serial_probe,
 	.ops	= &mxc_serial_ops,
diff --git a/drivers/serial/serial_omap.c b/drivers/serial/serial_omap.c
index 2b0a3e4..2f38e1b 100644
--- a/drivers/serial/serial_omap.c
+++ b/drivers/serial/serial_omap.c
@@ -101,7 +101,7 @@
 #if CONFIG_IS_ENABLED(OF_CONTROL) && !CONFIG_IS_ENABLED(OF_PLATDATA)
 static int omap_serial_of_to_plat(struct udevice *dev)
 {
-	struct ns16550_platdata *plat = dev->plat;
+	struct ns16550_plat *plat = dev->plat;
 	fdt_addr_t addr;
 	struct clk clk;
 	int err;
@@ -158,7 +158,7 @@
 #if CONFIG_IS_ENABLED(OF_CONTROL) && !CONFIG_IS_ENABLED(OF_PLATDATA)
 	.of_match = omap_serial_ids,
 	.of_to_plat = omap_serial_of_to_plat,
-	.plat_auto	= sizeof(struct ns16550_platdata),
+	.plat_auto	= sizeof(struct ns16550_plat),
 #endif
 	.priv_auto	= sizeof(struct NS16550),
 	.probe = ns16550_serial_probe,
diff --git a/drivers/serial/serial_pl01x.c b/drivers/serial/serial_pl01x.c
index 45bc1de..b21e943 100644
--- a/drivers/serial/serial_pl01x.c
+++ b/drivers/serial/serial_pl01x.c
@@ -281,7 +281,7 @@
 
 int pl01x_serial_setbrg(struct udevice *dev, int baudrate)
 {
-	struct pl01x_serial_platdata *plat = dev_get_plat(dev);
+	struct pl01x_serial_plat *plat = dev_get_plat(dev);
 	struct pl01x_priv *priv = dev_get_priv(dev);
 
 	if (!plat->skip_init) {
@@ -294,7 +294,7 @@
 
 int pl01x_serial_probe(struct udevice *dev)
 {
-	struct pl01x_serial_platdata *plat = dev_get_plat(dev);
+	struct pl01x_serial_plat *plat = dev_get_plat(dev);
 	struct pl01x_priv *priv = dev_get_priv(dev);
 
 	priv->regs = (struct pl01x_regs *)plat->base;
@@ -350,7 +350,7 @@
 
 int pl01x_serial_of_to_plat(struct udevice *dev)
 {
-	struct pl01x_serial_platdata *plat = dev_get_plat(dev);
+	struct pl01x_serial_plat *plat = dev_get_plat(dev);
 	struct clk clk;
 	fdt_addr_t addr;
 	int ret;
@@ -388,7 +388,7 @@
 	.id	= UCLASS_SERIAL,
 	.of_match = of_match_ptr(pl01x_serial_id),
 	.of_to_plat = of_match_ptr(pl01x_serial_of_to_plat),
-	.plat_auto	= sizeof(struct pl01x_serial_platdata),
+	.plat_auto	= sizeof(struct pl01x_serial_plat),
 	.probe = pl01x_serial_probe,
 	.ops	= &pl01x_serial_ops,
 	.flags = DM_FLAG_PRE_RELOC,
diff --git a/drivers/serial/serial_pxa.c b/drivers/serial/serial_pxa.c
index 232218d..d82f3b9 100644
--- a/drivers/serial/serial_pxa.c
+++ b/drivers/serial/serial_pxa.c
@@ -268,7 +268,7 @@
 #ifdef CONFIG_DM_SERIAL
 static int pxa_serial_probe(struct udevice *dev)
 {
-	struct pxa_serial_platdata *plat = dev->plat;
+	struct pxa_serial_plat *plat = dev->plat;
 
 	pxa_setbrg_common((struct pxa_uart_regs *)plat->base, plat->port,
 			  plat->baudrate);
@@ -277,7 +277,7 @@
 
 static int pxa_serial_putc(struct udevice *dev, const char ch)
 {
-	struct pxa_serial_platdata *plat = dev->plat;
+	struct pxa_serial_plat *plat = dev->plat;
 	struct pxa_uart_regs *uart_regs = (struct pxa_uart_regs *)plat->base;
 
 	/* Wait for last character to go. */
@@ -291,7 +291,7 @@
 
 static int pxa_serial_getc(struct udevice *dev)
 {
-	struct pxa_serial_platdata *plat = dev->plat;
+	struct pxa_serial_plat *plat = dev->plat;
 	struct pxa_uart_regs *uart_regs = (struct pxa_uart_regs *)plat->base;
 
 	/* Wait for a character to arrive. */
@@ -303,7 +303,7 @@
 
 int pxa_serial_setbrg(struct udevice *dev, int baudrate)
 {
-	struct pxa_serial_platdata *plat = dev->plat;
+	struct pxa_serial_plat *plat = dev->plat;
 	struct pxa_uart_regs *uart_regs = (struct pxa_uart_regs *)plat->base;
 	int port = plat->port;
 
@@ -314,7 +314,7 @@
 
 static int pxa_serial_pending(struct udevice *dev, bool input)
 {
-	struct pxa_serial_platdata *plat = dev->plat;
+	struct pxa_serial_plat *plat = dev->plat;
 	struct pxa_uart_regs *uart_regs = (struct pxa_uart_regs *)plat->base;
 
 	if (input)
diff --git a/drivers/serial/serial_rockchip.c b/drivers/serial/serial_rockchip.c
index 930103a..4c0548e 100644
--- a/drivers/serial/serial_rockchip.c
+++ b/drivers/serial/serial_rockchip.c
@@ -12,22 +12,22 @@
 #include <asm/arch-rockchip/clock.h>
 
 #if defined(CONFIG_ROCKCHIP_RK3188)
-struct rockchip_uart_platdata {
+struct rockchip_uart_plat {
 	struct dtd_rockchip_rk3188_uart dtplat;
-	struct ns16550_platdata plat;
+	struct ns16550_plat plat;
 };
 struct dtd_rockchip_rk3188_uart *dtplat, s_dtplat;
 #elif defined(CONFIG_ROCKCHIP_RK3288)
-struct rockchip_uart_platdata {
+struct rockchip_uart_plat {
 	struct dtd_rockchip_rk3288_uart dtplat;
-	struct ns16550_platdata plat;
+	struct ns16550_plat plat;
 };
 struct dtd_rockchip_rk3288_uart *dtplat, s_dtplat;
 #endif
 
 static int rockchip_serial_probe(struct udevice *dev)
 {
-	struct rockchip_uart_platdata *plat = dev_get_plat(dev);
+	struct rockchip_uart_plat *plat = dev_get_plat(dev);
 
 	/* Create some new platform data for the standard driver */
 	plat->plat.base = plat->dtplat.reg[0];
@@ -43,7 +43,7 @@
 	.name	= "rockchip_rk3188_uart",
 	.id	= UCLASS_SERIAL,
 	.priv_auto	= sizeof(struct NS16550),
-	.plat_auto	= sizeof(struct rockchip_uart_platdata),
+	.plat_auto	= sizeof(struct rockchip_uart_plat),
 	.probe	= rockchip_serial_probe,
 	.ops	= &ns16550_serial_ops,
 	.flags	= DM_FLAG_PRE_RELOC,
@@ -53,7 +53,7 @@
 	.name	= "rockchip_rk3288_uart",
 	.id	= UCLASS_SERIAL,
 	.priv_auto	= sizeof(struct NS16550),
-	.plat_auto	= sizeof(struct rockchip_uart_platdata),
+	.plat_auto	= sizeof(struct rockchip_uart_plat),
 	.probe	= rockchip_serial_probe,
 	.ops	= &ns16550_serial_ops,
 	.flags	= DM_FLAG_PRE_RELOC,
diff --git a/drivers/serial/serial_s5p.c b/drivers/serial/serial_s5p.c
index 5a333c4..e328fb6 100644
--- a/drivers/serial/serial_s5p.c
+++ b/drivers/serial/serial_s5p.c
@@ -28,7 +28,7 @@
 #define TX_FIFO_FULL		(1 << 24)
 
 /* Information about a serial port */
-struct s5p_serial_platdata {
+struct s5p_serial_plat {
 	struct s5p_uart *reg;  /* address of registers in physical memory */
 	u8 port_id;     /* uart port number */
 };
@@ -88,7 +88,7 @@
 #ifndef CONFIG_SPL_BUILD
 int s5p_serial_setbrg(struct udevice *dev, int baudrate)
 {
-	struct s5p_serial_platdata *plat = dev->plat;
+	struct s5p_serial_plat *plat = dev->plat;
 	struct s5p_uart *const uart = plat->reg;
 	u32 uclk;
 
@@ -111,7 +111,7 @@
 
 static int s5p_serial_probe(struct udevice *dev)
 {
-	struct s5p_serial_platdata *plat = dev->plat;
+	struct s5p_serial_plat *plat = dev->plat;
 	struct s5p_uart *const uart = plat->reg;
 
 	s5p_serial_init(uart);
@@ -140,7 +140,7 @@
 
 static int s5p_serial_getc(struct udevice *dev)
 {
-	struct s5p_serial_platdata *plat = dev->plat;
+	struct s5p_serial_plat *plat = dev->plat;
 	struct s5p_uart *const uart = plat->reg;
 
 	if (!(readl(&uart->ufstat) & RX_FIFO_COUNT_MASK))
@@ -152,7 +152,7 @@
 
 static int s5p_serial_putc(struct udevice *dev, const char ch)
 {
-	struct s5p_serial_platdata *plat = dev->plat;
+	struct s5p_serial_plat *plat = dev->plat;
 	struct s5p_uart *const uart = plat->reg;
 
 	if (readl(&uart->ufstat) & TX_FIFO_FULL)
@@ -166,7 +166,7 @@
 
 static int s5p_serial_pending(struct udevice *dev, bool input)
 {
-	struct s5p_serial_platdata *plat = dev->plat;
+	struct s5p_serial_plat *plat = dev->plat;
 	struct s5p_uart *const uart = plat->reg;
 	uint32_t ufstat = readl(&uart->ufstat);
 
@@ -178,7 +178,7 @@
 
 static int s5p_serial_of_to_plat(struct udevice *dev)
 {
-	struct s5p_serial_platdata *plat = dev->plat;
+	struct s5p_serial_plat *plat = dev->plat;
 	fdt_addr_t addr;
 
 	addr = dev_read_addr(dev);
@@ -208,7 +208,7 @@
 	.id	= UCLASS_SERIAL,
 	.of_match = s5p_serial_ids,
 	.of_to_plat = s5p_serial_of_to_plat,
-	.plat_auto	= sizeof(struct s5p_serial_platdata),
+	.plat_auto	= sizeof(struct s5p_serial_plat),
 	.probe = s5p_serial_probe,
 	.ops	= &s5p_serial_ops,
 };
diff --git a/drivers/serial/serial_sh.c b/drivers/serial/serial_sh.c
index a961ead..d74f890 100644
--- a/drivers/serial/serial_sh.c
+++ b/drivers/serial/serial_sh.c
@@ -169,7 +169,7 @@
 
 static int sh_serial_setbrg(struct udevice *dev, int baudrate)
 {
-	struct sh_serial_platdata *plat = dev_get_plat(dev);
+	struct sh_serial_plat *plat = dev_get_plat(dev);
 	struct uart_port *priv = dev_get_priv(dev);
 
 	sh_serial_setbrg_generic(priv, plat->clk, baudrate);
@@ -179,7 +179,7 @@
 
 static int sh_serial_probe(struct udevice *dev)
 {
-	struct sh_serial_platdata *plat = dev_get_plat(dev);
+	struct sh_serial_plat *plat = dev_get_plat(dev);
 	struct uart_port *priv = dev_get_priv(dev);
 
 	priv->membase	= (unsigned char *)plat->base;
@@ -209,7 +209,7 @@
 
 static int sh_serial_of_to_plat(struct udevice *dev)
 {
-	struct sh_serial_platdata *plat = dev_get_plat(dev);
+	struct sh_serial_plat *plat = dev_get_plat(dev);
 	struct clk sh_serial_clk;
 	fdt_addr_t addr;
 	int ret;
@@ -240,7 +240,7 @@
 	.id	= UCLASS_SERIAL,
 	.of_match = of_match_ptr(sh_serial_id),
 	.of_to_plat = of_match_ptr(sh_serial_of_to_plat),
-	.plat_auto	= sizeof(struct sh_serial_platdata),
+	.plat_auto	= sizeof(struct sh_serial_plat),
 	.probe	= sh_serial_probe,
 	.ops	= &sh_serial_ops,
 #if !CONFIG_IS_ENABLED(OF_CONTROL)
diff --git a/drivers/serial/serial_sifive.c b/drivers/serial/serial_sifive.c
index 5248c68..d26fe7e 100644
--- a/drivers/serial/serial_sifive.c
+++ b/drivers/serial/serial_sifive.c
@@ -37,7 +37,7 @@
 	u32 div;
 };
 
-struct sifive_uart_platdata {
+struct sifive_uart_plat {
 	unsigned long clock;
 	struct uart_sifive *regs;
 };
@@ -105,7 +105,7 @@
 {
 	int ret;
 	struct clk clk;
-	struct sifive_uart_platdata *plat = dev_get_plat(dev);
+	struct sifive_uart_plat *plat = dev_get_plat(dev);
 	u32 clock = 0;
 
 	ret = clk_get_by_index(dev, 0, &clk);
@@ -131,7 +131,7 @@
 
 static int sifive_serial_probe(struct udevice *dev)
 {
-	struct sifive_uart_platdata *plat = dev_get_plat(dev);
+	struct sifive_uart_plat *plat = dev_get_plat(dev);
 
 	/* No need to reinitialize the UART after relocation */
 	if (gd->flags & GD_FLG_RELOC)
@@ -145,7 +145,7 @@
 static int sifive_serial_getc(struct udevice *dev)
 {
 	int c;
-	struct sifive_uart_platdata *plat = dev_get_plat(dev);
+	struct sifive_uart_plat *plat = dev_get_plat(dev);
 	struct uart_sifive *regs = plat->regs;
 
 	while ((c = _sifive_serial_getc(regs)) == -EAGAIN) ;
@@ -156,7 +156,7 @@
 static int sifive_serial_putc(struct udevice *dev, const char ch)
 {
 	int rc;
-	struct sifive_uart_platdata *plat = dev_get_plat(dev);
+	struct sifive_uart_plat *plat = dev_get_plat(dev);
 
 	while ((rc = _sifive_serial_putc(plat->regs, ch)) == -EAGAIN) ;
 
@@ -165,7 +165,7 @@
 
 static int sifive_serial_pending(struct udevice *dev, bool input)
 {
-	struct sifive_uart_platdata *plat = dev_get_plat(dev);
+	struct sifive_uart_plat *plat = dev_get_plat(dev);
 	struct uart_sifive *regs = plat->regs;
 
 	if (input)
@@ -176,7 +176,7 @@
 
 static int sifive_serial_of_to_plat(struct udevice *dev)
 {
-	struct sifive_uart_platdata *plat = dev_get_plat(dev);
+	struct sifive_uart_plat *plat = dev_get_plat(dev);
 
 	plat->regs = (struct uart_sifive *)dev_read_addr(dev);
 	if (IS_ERR(plat->regs))
@@ -202,7 +202,7 @@
 	.id	= UCLASS_SERIAL,
 	.of_match = sifive_serial_ids,
 	.of_to_plat = sifive_serial_of_to_plat,
-	.plat_auto	= sizeof(struct sifive_uart_platdata),
+	.plat_auto	= sizeof(struct sifive_uart_plat),
 	.probe = sifive_serial_probe,
 	.ops	= &sifive_serial_ops,
 };
diff --git a/drivers/serial/serial_stm32.c b/drivers/serial/serial_stm32.c
index 63344b3..818c34c 100644
--- a/drivers/serial/serial_stm32.c
+++ b/drivers/serial/serial_stm32.c
@@ -44,7 +44,7 @@
 
 static int stm32_serial_setbrg(struct udevice *dev, int baudrate)
 {
-	struct stm32x7_serial_platdata *plat = dev_get_plat(dev);
+	struct stm32x7_serial_plat *plat = dev_get_plat(dev);
 
 	_stm32_serial_setbrg(plat->base, plat->uart_info,
 			     plat->clock_rate, baudrate);
@@ -54,7 +54,7 @@
 
 static int stm32_serial_setconfig(struct udevice *dev, uint serial_config)
 {
-	struct stm32x7_serial_platdata *plat = dev_get_plat(dev);
+	struct stm32x7_serial_plat *plat = dev_get_plat(dev);
 	bool stm32f4 = plat->uart_info->stm32f4;
 	u8 uart_enable_bit = plat->uart_info->uart_enable_bit;
 	u32 cr1 = plat->base + CR1_OFFSET(stm32f4);
@@ -102,7 +102,7 @@
 
 static int stm32_serial_getc(struct udevice *dev)
 {
-	struct stm32x7_serial_platdata *plat = dev_get_plat(dev);
+	struct stm32x7_serial_plat *plat = dev_get_plat(dev);
 	bool stm32f4 = plat->uart_info->stm32f4;
 	fdt_addr_t base = plat->base;
 	u32 isr = readl(base + ISR_OFFSET(stm32f4));
@@ -139,14 +139,14 @@
 
 static int stm32_serial_putc(struct udevice *dev, const char c)
 {
-	struct stm32x7_serial_platdata *plat = dev_get_plat(dev);
+	struct stm32x7_serial_plat *plat = dev_get_plat(dev);
 
 	return _stm32_serial_putc(plat->base, plat->uart_info, c);
 }
 
 static int stm32_serial_pending(struct udevice *dev, bool input)
 {
-	struct stm32x7_serial_platdata *plat = dev_get_plat(dev);
+	struct stm32x7_serial_plat *plat = dev_get_plat(dev);
 	bool stm32f4 = plat->uart_info->stm32f4;
 	fdt_addr_t base = plat->base;
 
@@ -175,7 +175,7 @@
 
 static int stm32_serial_probe(struct udevice *dev)
 {
-	struct stm32x7_serial_platdata *plat = dev_get_plat(dev);
+	struct stm32x7_serial_plat *plat = dev_get_plat(dev);
 	struct clk clk;
 	struct reset_ctl reset;
 	int ret;
@@ -219,7 +219,7 @@
 
 static int stm32_serial_of_to_plat(struct udevice *dev)
 {
-	struct stm32x7_serial_platdata *plat = dev_get_plat(dev);
+	struct stm32x7_serial_plat *plat = dev_get_plat(dev);
 
 	plat->base = dev_read_addr(dev);
 	if (plat->base == FDT_ADDR_T_NONE)
@@ -241,7 +241,7 @@
 	.id = UCLASS_SERIAL,
 	.of_match = of_match_ptr(stm32_serial_id),
 	.of_to_plat = of_match_ptr(stm32_serial_of_to_plat),
-	.plat_auto	= sizeof(struct stm32x7_serial_platdata),
+	.plat_auto	= sizeof(struct stm32x7_serial_plat),
 	.ops = &stm32_serial_ops,
 	.probe = stm32_serial_probe,
 #if !CONFIG_IS_ENABLED(OF_CONTROL)
diff --git a/drivers/serial/serial_stm32.h b/drivers/serial/serial_stm32.h
index 5737651..5bee68f 100644
--- a/drivers/serial/serial_stm32.h
+++ b/drivers/serial/serial_stm32.h
@@ -48,7 +48,7 @@
 };
 
 /* Information about a serial port */
-struct stm32x7_serial_platdata {
+struct stm32x7_serial_plat {
 	fdt_addr_t base;  /* address of registers in physical memory */
 	struct stm32_uart_info *uart_info;
 	unsigned long int clock_rate;
diff --git a/drivers/serial/serial_xuartlite.c b/drivers/serial/serial_xuartlite.c
index df4877a..0efdc93 100644
--- a/drivers/serial/serial_xuartlite.c
+++ b/drivers/serial/serial_xuartlite.c
@@ -32,7 +32,7 @@
 	unsigned int control;
 };
 
-struct uartlite_platdata {
+struct uartlite_plat {
 	struct uartlite *regs;
 };
 
@@ -54,7 +54,7 @@
 
 static int uartlite_serial_putc(struct udevice *dev, const char ch)
 {
-	struct uartlite_platdata *plat = dev_get_plat(dev);
+	struct uartlite_plat *plat = dev_get_plat(dev);
 	struct uartlite *regs = plat->regs;
 
 	if (uart_in32(&regs->status) & SR_TX_FIFO_FULL)
@@ -67,7 +67,7 @@
 
 static int uartlite_serial_getc(struct udevice *dev)
 {
-	struct uartlite_platdata *plat = dev_get_plat(dev);
+	struct uartlite_plat *plat = dev_get_plat(dev);
 	struct uartlite *regs = plat->regs;
 
 	if (!(uart_in32(&regs->status) & SR_RX_FIFO_VALID_DATA))
@@ -78,7 +78,7 @@
 
 static int uartlite_serial_pending(struct udevice *dev, bool input)
 {
-	struct uartlite_platdata *plat = dev_get_plat(dev);
+	struct uartlite_plat *plat = dev_get_plat(dev);
 	struct uartlite *regs = plat->regs;
 
 	if (input)
@@ -89,7 +89,7 @@
 
 static int uartlite_serial_probe(struct udevice *dev)
 {
-	struct uartlite_platdata *plat = dev_get_plat(dev);
+	struct uartlite_plat *plat = dev_get_plat(dev);
 	struct uartlite *regs = plat->regs;
 	int ret;
 
@@ -108,7 +108,7 @@
 
 static int uartlite_serial_of_to_plat(struct udevice *dev)
 {
-	struct uartlite_platdata *plat = dev_get_plat(dev);
+	struct uartlite_plat *plat = dev_get_plat(dev);
 
 	plat->regs = dev_read_addr_ptr(dev);
 
@@ -132,7 +132,7 @@
 	.id	= UCLASS_SERIAL,
 	.of_match = uartlite_serial_ids,
 	.of_to_plat = uartlite_serial_of_to_plat,
-	.plat_auto	= sizeof(struct uartlite_platdata),
+	.plat_auto	= sizeof(struct uartlite_plat),
 	.probe = uartlite_serial_probe,
 	.ops	= &uartlite_serial_ops,
 };
diff --git a/drivers/serial/serial_zynq.c b/drivers/serial/serial_zynq.c
index 1d748e1..2883e24 100644
--- a/drivers/serial/serial_zynq.c
+++ b/drivers/serial/serial_zynq.c
@@ -41,7 +41,7 @@
 	u32 baud_rate_divider; /* 0x34 - Baud Rate Divider [7:0] */
 };
 
-struct zynq_uart_platdata {
+struct zynq_uart_plat {
 	struct uart_zynq *regs;
 };
 
@@ -107,7 +107,7 @@
 
 static int zynq_serial_setbrg(struct udevice *dev, int baudrate)
 {
-	struct zynq_uart_platdata *plat = dev_get_plat(dev);
+	struct zynq_uart_plat *plat = dev_get_plat(dev);
 	unsigned long clock;
 
 	int ret;
@@ -139,7 +139,7 @@
 
 static int zynq_serial_probe(struct udevice *dev)
 {
-	struct zynq_uart_platdata *plat = dev_get_plat(dev);
+	struct zynq_uart_plat *plat = dev_get_plat(dev);
 	struct uart_zynq *regs = plat->regs;
 	u32 val;
 
@@ -155,7 +155,7 @@
 
 static int zynq_serial_getc(struct udevice *dev)
 {
-	struct zynq_uart_platdata *plat = dev_get_plat(dev);
+	struct zynq_uart_plat *plat = dev_get_plat(dev);
 	struct uart_zynq *regs = plat->regs;
 
 	if (readl(&regs->channel_sts) & ZYNQ_UART_SR_RXEMPTY)
@@ -166,14 +166,14 @@
 
 static int zynq_serial_putc(struct udevice *dev, const char ch)
 {
-	struct zynq_uart_platdata *plat = dev_get_plat(dev);
+	struct zynq_uart_plat *plat = dev_get_plat(dev);
 
 	return _uart_zynq_serial_putc(plat->regs, ch);
 }
 
 static int zynq_serial_pending(struct udevice *dev, bool input)
 {
-	struct zynq_uart_platdata *plat = dev_get_plat(dev);
+	struct zynq_uart_plat *plat = dev_get_plat(dev);
 	struct uart_zynq *regs = plat->regs;
 
 	if (input)
@@ -184,7 +184,7 @@
 
 static int zynq_serial_of_to_plat(struct udevice *dev)
 {
-	struct zynq_uart_platdata *plat = dev_get_plat(dev);
+	struct zynq_uart_plat *plat = dev_get_plat(dev);
 
 	plat->regs = (struct uart_zynq *)dev_read_addr(dev);
 	if (IS_ERR(plat->regs))
@@ -212,7 +212,7 @@
 	.id	= UCLASS_SERIAL,
 	.of_match = zynq_serial_ids,
 	.of_to_plat = zynq_serial_of_to_plat,
-	.plat_auto	= sizeof(struct zynq_uart_platdata),
+	.plat_auto	= sizeof(struct zynq_uart_plat),
 	.probe = zynq_serial_probe,
 	.ops	= &zynq_serial_ops,
 };
diff --git a/drivers/soc/soc_ti_k3.c b/drivers/soc/soc_ti_k3.c
index cd7cf5b..ecc3278 100644
--- a/drivers/soc/soc_ti_k3.c
+++ b/drivers/soc/soc_ti_k3.c
@@ -22,7 +22,7 @@
 #define JTAG_ID_PARTNO_SHIFT	12
 #define JTAG_ID_PARTNO_MASK	(0xffff << 12)
 
-struct soc_ti_k3_platdata {
+struct soc_ti_k3_plat {
 	const char *family;
 	const char *revision;
 };
@@ -74,7 +74,7 @@
 
 static int soc_ti_k3_get_family(struct udevice *dev, char *buf, int size)
 {
-	struct soc_ti_k3_platdata *plat = dev_get_plat(dev);
+	struct soc_ti_k3_plat *plat = dev_get_plat(dev);
 
 	snprintf(buf, size, "%s", plat->family);
 
@@ -83,7 +83,7 @@
 
 static int soc_ti_k3_get_revision(struct udevice *dev, char *buf, int size)
 {
-	struct soc_ti_k3_platdata *plat = dev_get_plat(dev);
+	struct soc_ti_k3_plat *plat = dev_get_plat(dev);
 
 	snprintf(buf, size, "SR%s", plat->revision);
 
@@ -97,7 +97,7 @@
 
 int soc_ti_k3_probe(struct udevice *dev)
 {
-	struct soc_ti_k3_platdata *plat = dev_get_plat(dev);
+	struct soc_ti_k3_plat *plat = dev_get_plat(dev);
 	u32 idreg;
 	void *idreg_addr;
 
@@ -124,5 +124,5 @@
 	.ops		= &soc_ti_k3_ops,
 	.of_match       = soc_ti_k3_ids,
 	.probe          = soc_ti_k3_probe,
-	.plat_auto	= sizeof(struct soc_ti_k3_platdata),
+	.plat_auto	= sizeof(struct soc_ti_k3_plat),
 };
diff --git a/drivers/sound/ivybridge_sound.c b/drivers/sound/ivybridge_sound.c
index d8d128a..492a86c 100644
--- a/drivers/sound/ivybridge_sound.c
+++ b/drivers/sound/ivybridge_sound.c
@@ -22,7 +22,7 @@
 
 static int bd82x6x_azalia_probe(struct udevice *dev)
 {
-	struct pci_child_platdata *plat;
+	struct pci_child_plat *plat;
 	struct hda_codec_priv *priv;
 	struct udevice *pch;
 	u32 codec_mask;
diff --git a/drivers/spi/altera_spi.c b/drivers/spi/altera_spi.c
index 84aca85..fd01c8e 100644
--- a/drivers/spi/altera_spi.c
+++ b/drivers/spi/altera_spi.c
@@ -32,7 +32,7 @@
 	u32	slave_sel;
 };
 
-struct altera_spi_platdata {
+struct altera_spi_plat {
 	struct altera_spi_regs *regs;
 };
 
@@ -89,7 +89,7 @@
 	struct udevice *bus = dev->parent;
 	struct altera_spi_priv *priv = dev_get_priv(bus);
 	struct altera_spi_regs *const regs = priv->regs;
-	struct dm_spi_slave_platdata *slave_plat = dev_get_parent_plat(dev);
+	struct dm_spi_slave_plat *slave_plat = dev_get_parent_plat(dev);
 
 	/* assume spi core configured to do 8 bit transfers */
 	unsigned int bytes = bitlen / 8;
@@ -161,7 +161,7 @@
 
 static int altera_spi_probe(struct udevice *bus)
 {
-	struct altera_spi_platdata *plat = dev_get_plat(bus);
+	struct altera_spi_plat *plat = dev_get_plat(bus);
 	struct altera_spi_priv *priv = dev_get_priv(bus);
 
 	priv->regs = plat->regs;
@@ -171,7 +171,7 @@
 
 static int altera_spi_of_to_plat(struct udevice *bus)
 {
-	struct altera_spi_platdata *plat = dev_get_plat(bus);
+	struct altera_spi_plat *plat = dev_get_plat(bus);
 
 	plat->regs = map_physmem(dev_read_addr(bus),
 				 sizeof(struct altera_spi_regs),
@@ -203,7 +203,7 @@
 	.of_match = altera_spi_ids,
 	.ops	= &altera_spi_ops,
 	.of_to_plat = altera_spi_of_to_plat,
-	.plat_auto	= sizeof(struct altera_spi_platdata),
+	.plat_auto	= sizeof(struct altera_spi_plat),
 	.priv_auto	= sizeof(struct altera_spi_priv),
 	.probe	= altera_spi_probe,
 };
diff --git a/drivers/spi/atcspi200_spi.c b/drivers/spi/atcspi200_spi.c
index 9917b54..0f05158 100644
--- a/drivers/spi/atcspi200_spi.c
+++ b/drivers/spi/atcspi200_spi.c
@@ -309,7 +309,7 @@
 
 static int atcspi200_spi_claim_bus(struct udevice *dev)
 {
-	struct dm_spi_slave_platdata *slave_plat =
+	struct dm_spi_slave_plat *slave_plat =
 		dev_get_parent_plat(dev);
 	struct udevice *bus = dev->parent;
 	struct nds_spi_slave *ns = dev_get_priv(bus);
diff --git a/drivers/spi/ath79_spi.c b/drivers/spi/ath79_spi.c
index ad2c7ff..205567e 100644
--- a/drivers/spi/ath79_spi.c
+++ b/drivers/spi/ath79_spi.c
@@ -59,7 +59,7 @@
 {
 	struct udevice *bus = dev_get_parent(dev);
 	struct ath79_spi_priv *priv = dev_get_priv(bus);
-	struct dm_spi_slave_platdata *slave = dev_get_parent_plat(dev);
+	struct dm_spi_slave_plat *slave = dev_get_parent_plat(dev);
 	u8 *rx = din;
 	const u8 *tx = dout;
 	u8 curbyte, curbitlen, restbits;
diff --git a/drivers/spi/atmel_spi.c b/drivers/spi/atmel_spi.c
index 9795972..702e225 100644
--- a/drivers/spi/atmel_spi.c
+++ b/drivers/spi/atmel_spi.c
@@ -105,7 +105,7 @@
 #define spi_writel(as, reg, value)				\
 	writel(value, as->regs + ATMEL_SPI_##reg)
 
-struct atmel_spi_platdata {
+struct atmel_spi_plat {
 	struct at91_spi *regs;
 };
 
@@ -121,9 +121,9 @@
 static int atmel_spi_claim_bus(struct udevice *dev)
 {
 	struct udevice *bus = dev_get_parent(dev);
-	struct atmel_spi_platdata *bus_plat = dev_get_plat(bus);
+	struct atmel_spi_plat *bus_plat = dev_get_plat(bus);
 	struct atmel_spi_priv *priv = dev_get_priv(bus);
-	struct dm_spi_slave_platdata *slave_plat = dev_get_parent_plat(dev);
+	struct dm_spi_slave_plat *slave_plat = dev_get_parent_plat(dev);
 	struct at91_spi *reg_base = bus_plat->regs;
 	u32 cs = slave_plat->cs;
 	u32 freq = priv->freq;
@@ -161,7 +161,7 @@
 static int atmel_spi_release_bus(struct udevice *dev)
 {
 	struct udevice *bus = dev_get_parent(dev);
-	struct atmel_spi_platdata *bus_plat = dev_get_plat(bus);
+	struct atmel_spi_plat *bus_plat = dev_get_plat(bus);
 
 	writel(ATMEL_SPI_CR_SPIDIS, &bus_plat->regs->cr);
 
@@ -173,7 +173,7 @@
 #if CONFIG_IS_ENABLED(DM_GPIO)
 	struct udevice *bus = dev_get_parent(dev);
 	struct atmel_spi_priv *priv = dev_get_priv(bus);
-	struct dm_spi_slave_platdata *slave_plat = dev_get_parent_plat(dev);
+	struct dm_spi_slave_plat *slave_plat = dev_get_parent_plat(dev);
 	u32 cs = slave_plat->cs;
 
 	if (!dm_gpio_is_valid(&priv->cs_gpios[cs]))
@@ -188,7 +188,7 @@
 #if CONFIG_IS_ENABLED(DM_GPIO)
 	struct udevice *bus = dev_get_parent(dev);
 	struct atmel_spi_priv *priv = dev_get_priv(bus);
-	struct dm_spi_slave_platdata *slave_plat = dev_get_parent_plat(dev);
+	struct dm_spi_slave_plat *slave_plat = dev_get_parent_plat(dev);
 	u32 cs = slave_plat->cs;
 
 	if (!dm_gpio_is_valid(&priv->cs_gpios[cs]))
@@ -202,7 +202,7 @@
 			  const void *dout, void *din, unsigned long flags)
 {
 	struct udevice *bus = dev_get_parent(dev);
-	struct atmel_spi_platdata *bus_plat = dev_get_plat(bus);
+	struct atmel_spi_plat *bus_plat = dev_get_plat(bus);
 	struct at91_spi *reg_base = bus_plat->regs;
 
 	u32 len_tx, len_rx, len;
@@ -344,7 +344,7 @@
 
 static int atmel_spi_probe(struct udevice *bus)
 {
-	struct atmel_spi_platdata *bus_plat = dev_get_plat(bus);
+	struct atmel_spi_plat *bus_plat = dev_get_plat(bus);
 	int ret;
 
 	ret = atmel_spi_enable_clk(bus);
@@ -388,7 +388,7 @@
 	.id	= UCLASS_SPI,
 	.of_match = atmel_spi_ids,
 	.ops	= &atmel_spi_ops,
-	.plat_auto	= sizeof(struct atmel_spi_platdata),
+	.plat_auto	= sizeof(struct atmel_spi_plat),
 	.priv_auto	= sizeof(struct atmel_spi_priv),
 	.probe	= atmel_spi_probe,
 };
diff --git a/drivers/spi/bcm63xx_hsspi.c b/drivers/spi/bcm63xx_hsspi.c
index 6d7d169..85108df 100644
--- a/drivers/spi/bcm63xx_hsspi.c
+++ b/drivers/spi/bcm63xx_hsspi.c
@@ -140,7 +140,7 @@
 }
 
 static void bcm63xx_hsspi_activate_cs(struct bcm63xx_hsspi_priv *priv,
-				   struct dm_spi_slave_platdata *plat)
+				   struct dm_spi_slave_plat *plat)
 {
 	uint32_t clr, set;
 
@@ -217,7 +217,7 @@
 		const void *dout, void *din, unsigned long flags)
 {
 	struct bcm63xx_hsspi_priv *priv = dev_get_priv(dev->parent);
-	struct dm_spi_slave_platdata *plat = dev_get_parent_plat(dev);
+	struct dm_spi_slave_plat *plat = dev_get_parent_plat(dev);
 	size_t data_bytes = bitlen / 8;
 	size_t step_size = HSSPI_FIFO_SIZE;
 	uint16_t opcode = 0;
@@ -316,7 +316,7 @@
 static int bcm63xx_hsspi_child_pre_probe(struct udevice *dev)
 {
 	struct bcm63xx_hsspi_priv *priv = dev_get_priv(dev->parent);
-	struct dm_spi_slave_platdata *plat = dev_get_parent_plat(dev);
+	struct dm_spi_slave_plat *plat = dev_get_parent_plat(dev);
 
 	/* check cs */
 	if (plat->cs >= priv->num_cs) {
diff --git a/drivers/spi/bcm63xx_spi.c b/drivers/spi/bcm63xx_spi.c
index fe5fe5b..dd5e62b 100644
--- a/drivers/spi/bcm63xx_spi.c
+++ b/drivers/spi/bcm63xx_spi.c
@@ -236,7 +236,7 @@
 	}
 
 	if (flags & SPI_XFER_END) {
-		struct dm_spi_slave_platdata *plat =
+		struct dm_spi_slave_plat *plat =
 			dev_get_parent_plat(dev);
 		uint16_t val, cmd;
 		int ret;
@@ -351,7 +351,7 @@
 	struct bcm63xx_spi_priv *priv = dev_get_priv(dev->parent);
 	const unsigned long *regs = priv->regs;
 	struct spi_slave *slave = dev_get_parent_priv(dev);
-	struct dm_spi_slave_platdata *plat = dev_get_parent_plat(dev);
+	struct dm_spi_slave_plat *plat = dev_get_parent_plat(dev);
 
 	/* check cs */
 	if (plat->cs >= priv->num_cs) {
diff --git a/drivers/spi/bcmstb_spi.c b/drivers/spi/bcmstb_spi.c
index 3afc051..dc4fdac 100644
--- a/drivers/spi/bcmstb_spi.c
+++ b/drivers/spi/bcmstb_spi.c
@@ -76,7 +76,7 @@
 	BASE_LAST,
 };
 
-struct bcmstb_spi_platdata {
+struct bcmstb_spi_plat {
 	void *base[4];
 };
 
@@ -96,7 +96,7 @@
 
 static int bcmstb_spi_of_to_plat(struct udevice *bus)
 {
-	struct bcmstb_spi_platdata *plat = dev_get_plat(bus);
+	struct bcmstb_spi_plat *plat = dev_get_plat(bus);
 	const void *fdt = gd->fdt_blob;
 	int node = dev_of_offset(bus);
 	int ret = 0;
@@ -159,7 +159,7 @@
 
 static int bcmstb_spi_probe(struct udevice *bus)
 {
-	struct bcmstb_spi_platdata *plat = dev_get_plat(bus);
+	struct bcmstb_spi_plat *plat = dev_get_plat(bus);
 	struct bcmstb_spi_priv *priv = dev_get_priv(bus);
 
 	priv->regs = plat->base[HIF_MSPI];
@@ -434,6 +434,6 @@
 	.ops				= &bcmstb_spi_ops,
 	.of_to_plat		= bcmstb_spi_of_to_plat,
 	.probe				= bcmstb_spi_probe,
-	.plat_auto	= sizeof(struct bcmstb_spi_platdata),
+	.plat_auto	= sizeof(struct bcmstb_spi_plat),
 	.priv_auto		= sizeof(struct bcmstb_spi_priv),
 };
diff --git a/drivers/spi/cadence_qspi.c b/drivers/spi/cadence_qspi.c
index 2317d36..b746501 100644
--- a/drivers/spi/cadence_qspi.c
+++ b/drivers/spi/cadence_qspi.c
@@ -27,7 +27,7 @@
 
 static int cadence_spi_write_speed(struct udevice *bus, uint hz)
 {
-	struct cadence_spi_platdata *plat = bus->plat;
+	struct cadence_spi_plat *plat = bus->plat;
 	struct cadence_spi_priv *priv = dev_get_priv(bus);
 
 	cadence_qspi_apb_config_baudrate_div(priv->regbase,
@@ -130,7 +130,7 @@
 
 static int cadence_spi_set_speed(struct udevice *bus, uint hz)
 {
-	struct cadence_spi_platdata *plat = bus->plat;
+	struct cadence_spi_plat *plat = bus->plat;
 	struct cadence_spi_priv *priv = dev_get_priv(bus);
 	int err;
 
@@ -165,7 +165,7 @@
 
 static int cadence_spi_probe(struct udevice *bus)
 {
-	struct cadence_spi_platdata *plat = bus->plat;
+	struct cadence_spi_plat *plat = bus->plat;
 	struct cadence_spi_priv *priv = dev_get_priv(bus);
 	struct clk clk;
 	int ret;
@@ -212,7 +212,7 @@
 
 static int cadence_spi_set_mode(struct udevice *bus, uint mode)
 {
-	struct cadence_spi_platdata *plat = bus->plat;
+	struct cadence_spi_plat *plat = bus->plat;
 	struct cadence_spi_priv *priv = dev_get_priv(bus);
 
 	/* Disable QSPI */
@@ -235,7 +235,7 @@
 				   const struct spi_mem_op *op)
 {
 	struct udevice *bus = spi->dev->parent;
-	struct cadence_spi_platdata *plat = bus->plat;
+	struct cadence_spi_plat *plat = bus->plat;
 	struct cadence_spi_priv *priv = dev_get_priv(bus);
 	void *base = priv->regbase;
 	int err = 0;
@@ -284,7 +284,7 @@
 
 static int cadence_spi_of_to_plat(struct udevice *bus)
 {
-	struct cadence_spi_platdata *plat = bus->plat;
+	struct cadence_spi_plat *plat = bus->plat;
 	ofnode subnode;
 
 	plat->regbase = (void *)devfdt_get_addr_index(bus, 0);
@@ -354,7 +354,7 @@
 	.of_match = cadence_spi_ids,
 	.ops = &cadence_spi_ops,
 	.of_to_plat = cadence_spi_of_to_plat,
-	.plat_auto	= sizeof(struct cadence_spi_platdata),
+	.plat_auto	= sizeof(struct cadence_spi_plat),
 	.priv_auto	= sizeof(struct cadence_spi_priv),
 	.probe = cadence_spi_probe,
 	.remove = cadence_spi_remove,
diff --git a/drivers/spi/cadence_qspi.h b/drivers/spi/cadence_qspi.h
index ae459c7..64c5867 100644
--- a/drivers/spi/cadence_qspi.h
+++ b/drivers/spi/cadence_qspi.h
@@ -15,7 +15,7 @@
 #define CQSPI_DECODER_MAX_CS		16
 #define CQSPI_READ_CAPTURE_MAX_DELAY	16
 
-struct cadence_spi_platdata {
+struct cadence_spi_plat {
 	unsigned int	ref_clk_hz;
 	unsigned int	max_hz;
 	void		*regbase;
@@ -52,7 +52,7 @@
 };
 
 /* Functions call declaration */
-void cadence_qspi_apb_controller_init(struct cadence_spi_platdata *plat);
+void cadence_qspi_apb_controller_init(struct cadence_spi_plat *plat);
 void cadence_qspi_apb_controller_enable(void *reg_base_addr);
 void cadence_qspi_apb_controller_disable(void *reg_base_addr);
 void cadence_qspi_apb_dac_mode_enable(void *reg_base);
@@ -62,13 +62,13 @@
 int cadence_qspi_apb_command_write(void *reg_base_addr,
 				   const struct spi_mem_op *op);
 
-int cadence_qspi_apb_read_setup(struct cadence_spi_platdata *plat,
+int cadence_qspi_apb_read_setup(struct cadence_spi_plat *plat,
 				const struct spi_mem_op *op);
-int cadence_qspi_apb_read_execute(struct cadence_spi_platdata *plat,
+int cadence_qspi_apb_read_execute(struct cadence_spi_plat *plat,
 				  const struct spi_mem_op *op);
-int cadence_qspi_apb_write_setup(struct cadence_spi_platdata *plat,
+int cadence_qspi_apb_write_setup(struct cadence_spi_plat *plat,
 				 const struct spi_mem_op *op);
-int cadence_qspi_apb_write_execute(struct cadence_spi_platdata *plat,
+int cadence_qspi_apb_write_execute(struct cadence_spi_plat *plat,
 				   const struct spi_mem_op *op);
 
 void cadence_qspi_apb_chipselect(void *reg_base,
diff --git a/drivers/spi/cadence_qspi_apb.c b/drivers/spi/cadence_qspi_apb.c
index f9675f7..b051f46 100644
--- a/drivers/spi/cadence_qspi_apb.c
+++ b/drivers/spi/cadence_qspi_apb.c
@@ -377,7 +377,7 @@
 	cadence_qspi_apb_controller_enable(reg_base);
 }
 
-void cadence_qspi_apb_controller_init(struct cadence_spi_platdata *plat)
+void cadence_qspi_apb_controller_init(struct cadence_spi_plat *plat)
 {
 	unsigned reg;
 
@@ -526,7 +526,7 @@
 }
 
 /* Opcode + Address (3/4 bytes) + dummy bytes (0-4 bytes) */
-int cadence_qspi_apb_read_setup(struct cadence_spi_platdata *plat,
+int cadence_qspi_apb_read_setup(struct cadence_spi_plat *plat,
 				const struct spi_mem_op *op)
 {
 	unsigned int reg;
@@ -572,14 +572,14 @@
 	return 0;
 }
 
-static u32 cadence_qspi_get_rd_sram_level(struct cadence_spi_platdata *plat)
+static u32 cadence_qspi_get_rd_sram_level(struct cadence_spi_plat *plat)
 {
 	u32 reg = readl(plat->regbase + CQSPI_REG_SDRAMLEVEL);
 	reg >>= CQSPI_REG_SDRAMLEVEL_RD_LSB;
 	return reg & CQSPI_REG_SDRAMLEVEL_RD_MASK;
 }
 
-static int cadence_qspi_wait_for_data(struct cadence_spi_platdata *plat)
+static int cadence_qspi_wait_for_data(struct cadence_spi_plat *plat)
 {
 	unsigned int timeout = 10000;
 	u32 reg;
@@ -595,7 +595,7 @@
 }
 
 static int
-cadence_qspi_apb_indirect_read_execute(struct cadence_spi_platdata *plat,
+cadence_qspi_apb_indirect_read_execute(struct cadence_spi_plat *plat,
 				       unsigned int n_rx, u8 *rxbuf)
 {
 	unsigned int remaining = n_rx;
@@ -657,7 +657,7 @@
 	return ret;
 }
 
-int cadence_qspi_apb_read_execute(struct cadence_spi_platdata *plat,
+int cadence_qspi_apb_read_execute(struct cadence_spi_plat *plat,
 				  const struct spi_mem_op *op)
 {
 	u64 from = op->addr.val;
@@ -678,7 +678,7 @@
 }
 
 /* Opcode + Address (3/4 bytes) */
-int cadence_qspi_apb_write_setup(struct cadence_spi_platdata *plat,
+int cadence_qspi_apb_write_setup(struct cadence_spi_plat *plat,
 				 const struct spi_mem_op *op)
 {
 	unsigned int reg;
@@ -701,7 +701,7 @@
 }
 
 static int
-cadence_qspi_apb_indirect_write_execute(struct cadence_spi_platdata *plat,
+cadence_qspi_apb_indirect_write_execute(struct cadence_spi_plat *plat,
 					unsigned int n_tx, const u8 *txbuf)
 {
 	unsigned int page_size = plat->page_size;
@@ -774,7 +774,7 @@
 	return ret;
 }
 
-int cadence_qspi_apb_write_execute(struct cadence_spi_platdata *plat,
+int cadence_qspi_apb_write_execute(struct cadence_spi_plat *plat,
 				   const struct spi_mem_op *op)
 {
 	u32 to = op->addr.val;
diff --git a/drivers/spi/cf_spi.c b/drivers/spi/cf_spi.c
index 2ba523f..cc934d1 100644
--- a/drivers/spi/cf_spi.c
+++ b/drivers/spi/cf_spi.c
@@ -114,7 +114,7 @@
 	struct udevice *bus = dev->parent;
 	struct coldfire_spi_priv *cfspi = dev_get_priv(bus);
 	struct dspi *dspi = cfspi->regs;
-	struct dm_spi_slave_platdata *slave_plat =
+	struct dm_spi_slave_plat *slave_plat =
 		dev_get_parent_plat(dev);
 
 	if ((in_be32(&dspi->sr) & DSPI_SR_TXRXS) != DSPI_SR_TXRXS)
@@ -133,7 +133,7 @@
 	struct udevice *bus = dev->parent;
 	struct coldfire_spi_priv *cfspi = dev_get_priv(bus);
 	struct dspi *dspi = cfspi->regs;
-	struct dm_spi_slave_platdata *slave_plat =
+	struct dm_spi_slave_plat *slave_plat =
 		dev_get_parent_plat(dev);
 
 	/* Clear FIFO */
@@ -150,7 +150,7 @@
 {
 	struct udevice *bus = dev_get_parent(dev);
 	struct coldfire_spi_priv *cfspi = dev_get_priv(bus);
-	struct dm_spi_slave_platdata *slave_plat = dev_get_parent_plat(dev);
+	struct dm_spi_slave_plat *slave_plat = dev_get_parent_plat(dev);
 	u16 *spi_rd16 = NULL, *spi_wr16 = NULL;
 	u8 *spi_rd = NULL, *spi_wr = NULL;
 	static u32 ctrl;
@@ -343,7 +343,7 @@
 
 static int coldfire_spi_probe(struct udevice *bus)
 {
-	struct coldfire_spi_platdata *plat = dev_get_plat(bus);
+	struct coldfire_spi_plat *plat = dev_get_plat(bus);
 	struct coldfire_spi_priv *cfspi = dev_get_priv(bus);
 	struct dspi *dspi = cfspi->regs;
 	int i;
@@ -387,7 +387,7 @@
 static int coldfire_dspi_of_to_plat(struct udevice *bus)
 {
 	fdt_addr_t addr;
-	struct coldfire_spi_platdata *plat = bus->plat;
+	struct coldfire_spi_plat *plat = bus->plat;
 	const void *blob = gd->fdt_blob;
 	int node = dev_of_offset(bus);
 	int *ctar, len;
@@ -452,7 +452,7 @@
 #if CONFIG_IS_ENABLED(OF_CONTROL) && !CONFIG_IS_ENABLED(OF_PLATDATA)
 	.of_match = coldfire_spi_ids,
 	.of_to_plat = coldfire_dspi_of_to_plat,
-	.plat_auto	= sizeof(struct coldfire_spi_platdata),
+	.plat_auto	= sizeof(struct coldfire_spi_plat),
 #endif
 	.probe = coldfire_spi_probe,
 	.ops = &coldfire_spi_ops,
diff --git a/drivers/spi/davinci_spi.c b/drivers/spi/davinci_spi.c
index 0f887ed..ea088eb 100644
--- a/drivers/spi/davinci_spi.c
+++ b/drivers/spi/davinci_spi.c
@@ -333,7 +333,7 @@
 
 static int davinci_spi_claim_bus(struct udevice *dev)
 {
-	struct dm_spi_slave_platdata *slave_plat =
+	struct dm_spi_slave_plat *slave_plat =
 		dev_get_parent_plat(dev);
 	struct udevice *bus = dev->parent;
 	struct davinci_spi_slave *ds = dev_get_priv(bus);
@@ -358,7 +358,7 @@
 			    const void *dout, void *din,
 			    unsigned long flags)
 {
-	struct dm_spi_slave_platdata *slave =
+	struct dm_spi_slave_plat *slave =
 		dev_get_parent_plat(dev);
 	struct udevice *bus = dev->parent;
 	struct davinci_spi_slave *ds = dev_get_priv(bus);
@@ -383,7 +383,7 @@
 static int davinci_spi_probe(struct udevice *bus)
 {
 	struct davinci_spi_slave *ds = dev_get_priv(bus);
-	struct davinci_spi_platdata *plat = bus->plat;
+	struct davinci_spi_plat *plat = bus->plat;
 	ds->regs = plat->regs;
 	ds->num_cs = plat->num_cs;
 
@@ -393,7 +393,7 @@
 #if CONFIG_IS_ENABLED(OF_CONTROL) && !CONFIG_IS_ENABLED(OF_PLATDATA)
 static int davinci_ofdata_to_platadata(struct udevice *bus)
 {
-	struct davinci_spi_platdata *plat = bus->plat;
+	struct davinci_spi_plat *plat = bus->plat;
 	fdt_addr_t addr;
 
 	addr = dev_read_addr(bus);
@@ -420,7 +420,7 @@
 #if CONFIG_IS_ENABLED(OF_CONTROL) && !CONFIG_IS_ENABLED(OF_PLATDATA)
 	.of_match = davinci_spi_ids,
 	.of_to_plat = davinci_ofdata_to_platadata,
-	.plat_auto	= sizeof(struct davinci_spi_platdata),
+	.plat_auto	= sizeof(struct davinci_spi_plat),
 #endif
 	.probe = davinci_spi_probe,
 	.ops = &davinci_spi_ops,
diff --git a/drivers/spi/designware_spi.c b/drivers/spi/designware_spi.c
index 5429ac7..4fa4585 100644
--- a/drivers/spi/designware_spi.c
+++ b/drivers/spi/designware_spi.c
@@ -88,7 +88,7 @@
 
 #define RX_TIMEOUT			1000		/* timeout in ms */
 
-struct dw_spi_platdata {
+struct dw_spi_plat {
 	s32 frequency;		/* Default clock frequency, -1 for none */
 	void __iomem *regs;
 };
@@ -155,7 +155,7 @@
 
 static int dw_spi_of_to_plat(struct udevice *bus)
 {
-	struct dw_spi_platdata *plat = bus->plat;
+	struct dw_spi_plat *plat = bus->plat;
 
 	plat->regs = dev_read_addr_ptr(bus);
 
@@ -263,7 +263,7 @@
 
 static int dw_spi_probe(struct udevice *bus)
 {
-	struct dw_spi_platdata *plat = dev_get_plat(bus);
+	struct dw_spi_plat *plat = dev_get_plat(bus);
 	struct dw_spi_priv *priv = dev_get_priv(bus);
 	int ret;
 
@@ -478,7 +478,7 @@
 
 static int dw_spi_set_speed(struct udevice *bus, uint speed)
 {
-	struct dw_spi_platdata *plat = bus->plat;
+	struct dw_spi_plat *plat = bus->plat;
 	struct dw_spi_priv *priv = dev_get_priv(bus);
 	u16 clk_div;
 
@@ -560,7 +560,7 @@
 	.of_match = dw_spi_ids,
 	.ops = &dw_spi_ops,
 	.of_to_plat = dw_spi_of_to_plat,
-	.plat_auto	= sizeof(struct dw_spi_platdata),
+	.plat_auto	= sizeof(struct dw_spi_plat),
 	.priv_auto	= sizeof(struct dw_spi_priv),
 	.probe = dw_spi_probe,
 	.remove = dw_spi_remove,
diff --git a/drivers/spi/exynos_spi.c b/drivers/spi/exynos_spi.c
index 9505d88..e4d2bad 100644
--- a/drivers/spi/exynos_spi.c
+++ b/drivers/spi/exynos_spi.c
@@ -23,7 +23,7 @@
 
 DECLARE_GLOBAL_DATA_PTR;
 
-struct exynos_spi_platdata {
+struct exynos_spi_plat {
 	enum periph_id periph_id;
 	s32 frequency;		/* Default clock frequency, -1 for none */
 	struct exynos_spi *regs;
@@ -213,7 +213,7 @@
 static void spi_cs_activate(struct udevice *dev)
 {
 	struct udevice *bus = dev->parent;
-	struct exynos_spi_platdata *pdata = dev_get_plat(bus);
+	struct exynos_spi_plat *pdata = dev_get_plat(bus);
 	struct exynos_spi_priv *priv = dev_get_priv(bus);
 
 	/* If it's too soon to do another transaction, wait */
@@ -239,7 +239,7 @@
 static void spi_cs_deactivate(struct udevice *dev)
 {
 	struct udevice *bus = dev->parent;
-	struct exynos_spi_platdata *pdata = dev_get_plat(bus);
+	struct exynos_spi_plat *pdata = dev_get_plat(bus);
 	struct exynos_spi_priv *priv = dev_get_priv(bus);
 
 	setbits_le32(&priv->regs->cs_reg, SPI_SLAVE_SIG_INACT);
@@ -253,7 +253,7 @@
 
 static int exynos_spi_of_to_plat(struct udevice *bus)
 {
-	struct exynos_spi_platdata *plat = bus->plat;
+	struct exynos_spi_plat *plat = bus->plat;
 	const void *blob = gd->fdt_blob;
 	int node = dev_of_offset(bus);
 
@@ -280,7 +280,7 @@
 
 static int exynos_spi_probe(struct udevice *bus)
 {
-	struct exynos_spi_platdata *plat = dev_get_plat(bus);
+	struct exynos_spi_plat *plat = dev_get_plat(bus);
 	struct exynos_spi_priv *priv = dev_get_priv(bus);
 
 	priv->regs = plat->regs;
@@ -368,7 +368,7 @@
 
 static int exynos_spi_set_speed(struct udevice *bus, uint speed)
 {
-	struct exynos_spi_platdata *plat = bus->plat;
+	struct exynos_spi_plat *plat = bus->plat;
 	struct exynos_spi_priv *priv = dev_get_priv(bus);
 	int ret;
 
@@ -427,7 +427,7 @@
 	.of_match = exynos_spi_ids,
 	.ops	= &exynos_spi_ops,
 	.of_to_plat = exynos_spi_of_to_plat,
-	.plat_auto	= sizeof(struct exynos_spi_platdata),
+	.plat_auto	= sizeof(struct exynos_spi_plat),
 	.priv_auto	= sizeof(struct exynos_spi_priv),
 	.probe	= exynos_spi_probe,
 };
diff --git a/drivers/spi/fsl_dspi.c b/drivers/spi/fsl_dspi.c
index 82aabe7..fcaf2ba 100644
--- a/drivers/spi/fsl_dspi.c
+++ b/drivers/spi/fsl_dspi.c
@@ -31,7 +31,7 @@
 
 DECLARE_GLOBAL_DATA_PTR;
 
-/* fsl_dspi_platdata flags */
+/* fsl_dspi_plat flags */
 #define DSPI_FLAG_REGMAP_ENDIAN_BIG	BIT(0)
 
 /* idle data value */
@@ -65,14 +65,14 @@
 					DSPI_CTAR_DT(15))
 
 /**
- * struct fsl_dspi_platdata - platform data for Freescale DSPI
+ * struct fsl_dspi_plat - platform data for Freescale DSPI
  *
  * @flags: Flags for DSPI DSPI_FLAG_...
  * @speed_hz: Default SCK frequency
  * @num_chipselect: Number of DSPI chipselect signals
  * @regs_addr: Base address of DSPI registers
  */
-struct fsl_dspi_platdata {
+struct fsl_dspi_plat {
 	uint flags;
 	uint speed_hz;
 	uint num_chipselect;
@@ -448,7 +448,7 @@
 
 static int fsl_dspi_child_pre_probe(struct udevice *dev)
 {
-	struct dm_spi_slave_platdata *slave_plat = dev_get_parent_plat(dev);
+	struct dm_spi_slave_plat *slave_plat = dev_get_parent_plat(dev);
 	struct fsl_dspi_priv *priv = dev_get_priv(dev->parent);
 	u32 cs_sck_delay = 0, sck_cs_delay = 0;
 	unsigned char pcssck = 0, cssck = 0;
@@ -481,7 +481,7 @@
 
 static int fsl_dspi_probe(struct udevice *bus)
 {
-	struct fsl_dspi_platdata *plat = dev_get_plat(bus);
+	struct fsl_dspi_plat *plat = dev_get_plat(bus);
 	struct fsl_dspi_priv *priv = dev_get_priv(bus);
 	struct dm_spi_bus *dm_spi_bus;
 	uint mcr_cfg_val;
@@ -521,7 +521,7 @@
 	uint sr_val;
 	struct fsl_dspi_priv *priv;
 	struct udevice *bus = dev->parent;
-	struct dm_spi_slave_platdata *slave_plat =
+	struct dm_spi_slave_plat *slave_plat =
 		dev_get_parent_plat(dev);
 
 	priv = dev_get_priv(bus);
@@ -552,7 +552,7 @@
 {
 	struct udevice *bus = dev->parent;
 	struct fsl_dspi_priv *priv = dev_get_priv(bus);
-	struct dm_spi_slave_platdata *slave_plat =
+	struct dm_spi_slave_plat *slave_plat =
 		dev_get_parent_plat(dev);
 
 	/* halt module */
@@ -576,7 +576,7 @@
 static int fsl_dspi_of_to_plat(struct udevice *bus)
 {
 	fdt_addr_t addr;
-	struct fsl_dspi_platdata *plat = bus->plat;
+	struct fsl_dspi_plat *plat = bus->plat;
 	const void *blob = gd->fdt_blob;
 	int node = dev_of_offset(bus);
 
@@ -608,7 +608,7 @@
 		const void *dout, void *din, unsigned long flags)
 {
 	struct fsl_dspi_priv *priv;
-	struct dm_spi_slave_platdata *slave_plat = dev_get_parent_plat(dev);
+	struct dm_spi_slave_plat *slave_plat = dev_get_parent_plat(dev);
 	struct udevice *bus;
 
 	bus = dev->parent;
@@ -660,7 +660,7 @@
 	.of_match = fsl_dspi_ids,
 	.ops	= &fsl_dspi_ops,
 	.of_to_plat = fsl_dspi_of_to_plat,
-	.plat_auto	= sizeof(struct fsl_dspi_platdata),
+	.plat_auto	= sizeof(struct fsl_dspi_plat),
 	.priv_auto	= sizeof(struct fsl_dspi_priv),
 	.probe	= fsl_dspi_probe,
 	.child_pre_probe = fsl_dspi_child_pre_probe,
diff --git a/drivers/spi/fsl_espi.c b/drivers/spi/fsl_espi.c
index 0c40a4a..8545461 100644
--- a/drivers/spi/fsl_espi.c
+++ b/drivers/spi/fsl_espi.c
@@ -508,7 +508,7 @@
 
 static int fsl_espi_child_pre_probe(struct udevice *dev)
 {
-	struct dm_spi_slave_platdata *slave_plat = dev_get_parent_plat(dev);
+	struct dm_spi_slave_plat *slave_plat = dev_get_parent_plat(dev);
 	struct udevice *bus = dev->parent;
 	struct fsl_spi_slave *fsl = dev_get_priv(bus);
 
@@ -520,7 +520,7 @@
 
 static int fsl_espi_probe(struct udevice *bus)
 {
-	struct fsl_espi_platdata *plat = dev_get_plat(bus);
+	struct fsl_espi_plat *plat = dev_get_plat(bus);
 	struct fsl_spi_slave *fsl = dev_get_priv(bus);
 
 	fsl->espi = (ccsr_espi_t *)((u32)plat->regs_addr);
@@ -544,7 +544,7 @@
 static int fsl_espi_of_to_plat(struct udevice *bus)
 {
 	fdt_addr_t addr;
-	struct fsl_espi_platdata   *plat = bus->plat;
+	struct fsl_espi_plat   *plat = bus->plat;
 	const void *blob = gd->fdt_blob;
 	int node = dev_of_offset(bus);
 
@@ -576,7 +576,7 @@
 	.of_to_plat = fsl_espi_of_to_plat,
 #endif
 	.ops	= &fsl_espi_ops,
-	.plat_auto	= sizeof(struct fsl_espi_platdata),
+	.plat_auto	= sizeof(struct fsl_espi_plat),
 	.priv_auto	= sizeof(struct fsl_spi_slave),
 	.probe	= fsl_espi_probe,
 	.child_pre_probe = fsl_espi_child_pre_probe,
diff --git a/drivers/spi/fsl_qspi.c b/drivers/spi/fsl_qspi.c
index 089c2d8..fc3b844 100644
--- a/drivers/spi/fsl_qspi.c
+++ b/drivers/spi/fsl_qspi.c
@@ -515,7 +515,7 @@
 
 static void fsl_qspi_select_mem(struct fsl_qspi *q, struct spi_slave *slave)
 {
-	struct dm_spi_slave_platdata *plat =
+	struct dm_spi_slave_plat *plat =
 		dev_get_parent_plat(slave->dev);
 
 	if (q->selected == plat->cs)
diff --git a/drivers/spi/ich.c b/drivers/spi/ich.c
index 4c01ec8..e02850e 100644
--- a/drivers/spi/ich.c
+++ b/drivers/spi/ich.c
@@ -38,7 +38,7 @@
 #define debug_trace(x, args...)
 #endif
 
-struct ich_spi_platdata {
+struct ich_spi_plat {
 #if CONFIG_IS_ENABLED(OF_PLATDATA)
 	struct dtd_intel_fast_spi dtplat;
 #endif
@@ -139,7 +139,7 @@
 	return speed == 1;
 }
 
-static void spi_lock_down(struct ich_spi_platdata *plat, void *sbase)
+static void spi_lock_down(struct ich_spi_plat *plat, void *sbase)
 {
 	if (plat->ich_version == ICHV_7) {
 		struct ich7_spi_regs *ich7_spi = sbase;
@@ -152,7 +152,7 @@
 	}
 }
 
-static bool spi_lock_status(struct ich_spi_platdata *plat, void *sbase)
+static bool spi_lock_status(struct ich_spi_plat *plat, void *sbase)
 {
 	int lock = 0;
 
@@ -264,7 +264,7 @@
 				 const struct spi_mem_op *op)
 {
 	struct udevice *bus = dev_get_parent(slave->dev);
-	struct ich_spi_platdata *plat = dev_get_plat(bus);
+	struct ich_spi_plat *plat = dev_get_plat(bus);
 	struct ich_spi_priv *ctlr = dev_get_priv(bus);
 	uint16_t control;
 	int16_t opcode_index;
@@ -602,7 +602,7 @@
 static int ich_spi_exec_op(struct spi_slave *slave, const struct spi_mem_op *op)
 {
 	struct udevice *bus = dev_get_parent(slave->dev);
-	struct ich_spi_platdata *plat = dev_get_plat(bus);
+	struct ich_spi_plat *plat = dev_get_plat(bus);
 	int ret;
 
 	bootstage_start(BOOTSTAGE_ID_ACCUM_SPI, "fast_spi");
@@ -685,7 +685,7 @@
 	pci_dev_t spi_bdf;
 #if !CONFIG_IS_ENABLED(OF_PLATDATA)
 	if (device_is_on_pci_bus(bus)) {
-		struct pci_child_platdata *pplat;
+		struct pci_child_plat *pplat;
 
 		pplat = dev_get_parent_plat(bus);
 		spi_bdf = pplat->devfn;
@@ -706,7 +706,7 @@
 						   offsetp);
 	}
 #else
-	struct ich_spi_platdata *plat = dev_get_plat(bus);
+	struct ich_spi_plat *plat = dev_get_plat(bus);
 
 	/*
 	 * We cannot rely on plat->bdf being set up yet since this method can
@@ -758,7 +758,7 @@
 
 static int ich_protect_lockdown(struct udevice *dev)
 {
-	struct ich_spi_platdata *plat = dev_get_plat(dev);
+	struct ich_spi_plat *plat = dev_get_plat(dev);
 	struct ich_spi_priv *priv = dev_get_priv(dev);
 	int ret = -ENOSYS;
 
@@ -788,11 +788,11 @@
 }
 
 static int ich_init_controller(struct udevice *dev,
-			       struct ich_spi_platdata *plat,
+			       struct ich_spi_plat *plat,
 			       struct ich_spi_priv *ctlr)
 {
 	if (spl_phase() == PHASE_TPL) {
-		struct ich_spi_platdata *plat = dev_get_plat(dev);
+		struct ich_spi_plat *plat = dev_get_plat(dev);
 		int ret;
 
 		ret = fast_spi_early_init(plat->bdf, plat->mmio_base);
@@ -871,7 +871,7 @@
 
 static int ich_spi_probe(struct udevice *dev)
 {
-	struct ich_spi_platdata *plat = dev_get_plat(dev);
+	struct ich_spi_plat *plat = dev_get_plat(dev);
 	struct ich_spi_priv *priv = dev_get_priv(dev);
 	int ret;
 
@@ -924,7 +924,7 @@
 static int ich_spi_child_pre_probe(struct udevice *dev)
 {
 	struct udevice *bus = dev_get_parent(dev);
-	struct ich_spi_platdata *plat = dev_get_plat(bus);
+	struct ich_spi_plat *plat = dev_get_plat(bus);
 	struct ich_spi_priv *priv = dev_get_priv(bus);
 	struct spi_slave *slave = dev_get_parent_priv(dev);
 
@@ -947,7 +947,7 @@
 
 static int ich_spi_of_to_plat(struct udevice *dev)
 {
-	struct ich_spi_platdata *plat = dev_get_plat(dev);
+	struct ich_spi_plat *plat = dev_get_plat(dev);
 
 #if !CONFIG_IS_ENABLED(OF_PLATDATA)
 	struct ich_spi_priv *priv = dev_get_priv(dev);
@@ -1005,7 +1005,7 @@
 	.of_match = ich_spi_ids,
 	.ops	= &ich_spi_ops,
 	.of_to_plat = ich_spi_of_to_plat,
-	.plat_auto	= sizeof(struct ich_spi_platdata),
+	.plat_auto	= sizeof(struct ich_spi_plat),
 	.priv_auto	= sizeof(struct ich_spi_priv),
 	.child_pre_probe = ich_spi_child_pre_probe,
 	.probe	= ich_spi_probe,
diff --git a/drivers/spi/kirkwood_spi.c b/drivers/spi/kirkwood_spi.c
index 669a44c..43812da 100644
--- a/drivers/spi/kirkwood_spi.c
+++ b/drivers/spi/kirkwood_spi.c
@@ -23,7 +23,7 @@
 	bool			is_errata_50mhz_ac;
 };
 
-struct mvebu_spi_platdata {
+struct mvebu_spi_plat {
 	struct kwspi_registers *spireg;
 	bool is_errata_50mhz_ac;
 };
@@ -109,7 +109,7 @@
 
 static int mvebu_spi_set_speed(struct udevice *bus, uint hz)
 {
-	struct mvebu_spi_platdata *plat = dev_get_plat(bus);
+	struct mvebu_spi_plat *plat = dev_get_plat(bus);
 	struct kwspi_registers *reg = plat->spireg;
 	u32 data;
 
@@ -127,7 +127,7 @@
 
 static void mvebu_spi_50mhz_ac_timing_erratum(struct udevice *bus, uint mode)
 {
-	struct mvebu_spi_platdata *plat = dev_get_plat(bus);
+	struct mvebu_spi_plat *plat = dev_get_plat(bus);
 	struct kwspi_registers *reg = plat->spireg;
 	u32 data;
 
@@ -160,7 +160,7 @@
 
 static int mvebu_spi_set_mode(struct udevice *bus, uint mode)
 {
-	struct mvebu_spi_platdata *plat = dev_get_plat(bus);
+	struct mvebu_spi_plat *plat = dev_get_plat(bus);
 	struct kwspi_registers *reg = plat->spireg;
 	u32 data = readl(&reg->cfg);
 
@@ -185,7 +185,7 @@
 			  const void *dout, void *din, unsigned long flags)
 {
 	struct udevice *bus = dev->parent;
-	struct mvebu_spi_platdata *plat = dev_get_plat(bus);
+	struct mvebu_spi_plat *plat = dev_get_plat(bus);
 
 	return _spi_xfer(plat->spireg, bitlen, dout, din, flags);
 }
@@ -198,7 +198,7 @@
 static int mvebu_spi_claim_bus(struct udevice *dev)
 {
 	struct udevice *bus = dev->parent;
-	struct mvebu_spi_platdata *plat = dev_get_plat(bus);
+	struct mvebu_spi_plat *plat = dev_get_plat(bus);
 
 	/* Configure the chip-select in the CTRL register */
 	clrsetbits_le32(&plat->spireg->ctrl,
@@ -220,7 +220,7 @@
 
 static int mvebu_spi_probe(struct udevice *bus)
 {
-	struct mvebu_spi_platdata *plat = dev_get_plat(bus);
+	struct mvebu_spi_plat *plat = dev_get_plat(bus);
 	struct kwspi_registers *reg = plat->spireg;
 
 	writel(KWSPI_SMEMRDY, &reg->ctrl);
@@ -232,7 +232,7 @@
 
 static int mvebu_spi_of_to_plat(struct udevice *bus)
 {
-	struct mvebu_spi_platdata *plat = dev_get_plat(bus);
+	struct mvebu_spi_plat *plat = dev_get_plat(bus);
 	const struct mvebu_spi_dev *drvdata =
 		(struct mvebu_spi_dev *)dev_get_driver_data(bus);
 
@@ -296,7 +296,7 @@
 	.of_match = mvebu_spi_ids,
 	.ops = &mvebu_spi_ops,
 	.of_to_plat = mvebu_spi_of_to_plat,
-	.plat_auto	= sizeof(struct mvebu_spi_platdata),
+	.plat_auto	= sizeof(struct mvebu_spi_plat),
 	.priv_auto	= sizeof(struct mvebu_spi_priv),
 	.probe = mvebu_spi_probe,
 };
diff --git a/drivers/spi/mpc8xxx_spi.c b/drivers/spi/mpc8xxx_spi.c
index 02f8219..6869d60 100644
--- a/drivers/spi/mpc8xxx_spi.c
+++ b/drivers/spi/mpc8xxx_spi.c
@@ -107,7 +107,7 @@
 static void mpc8xxx_spi_cs_activate(struct udevice *dev)
 {
 	struct mpc8xxx_priv *priv = dev_get_priv(dev->parent);
-	struct dm_spi_slave_platdata *plat = dev_get_parent_plat(dev);
+	struct dm_spi_slave_plat *plat = dev_get_parent_plat(dev);
 
 	dm_gpio_set_value(&priv->gpios[plat->cs], 1);
 }
@@ -115,7 +115,7 @@
 static void mpc8xxx_spi_cs_deactivate(struct udevice *dev)
 {
 	struct mpc8xxx_priv *priv = dev_get_priv(dev->parent);
-	struct dm_spi_slave_platdata *plat = dev_get_parent_plat(dev);
+	struct dm_spi_slave_plat *plat = dev_get_parent_plat(dev);
 
 	dm_gpio_set_value(&priv->gpios[plat->cs], 0);
 }
@@ -126,7 +126,7 @@
 	struct udevice *bus = dev->parent;
 	struct mpc8xxx_priv *priv = dev_get_priv(bus);
 	spi8xxx_t *spi = priv->spi;
-	struct dm_spi_slave_platdata *plat = dev_get_parent_plat(dev);
+	struct dm_spi_slave_plat *plat = dev_get_parent_plat(dev);
 	u32 tmpdin = 0, tmpdout = 0, n;
 	const u8 *cout = dout;
 	u8 *cin = din;
diff --git a/drivers/spi/mscc_bb_spi.c b/drivers/spi/mscc_bb_spi.c
index e5de49a..2a01ea0 100644
--- a/drivers/spi/mscc_bb_spi.c
+++ b/drivers/spi/mscc_bb_spi.c
@@ -117,7 +117,7 @@
 		     const void *dout, void *din, unsigned long flags)
 {
 	struct udevice *bus = dev_get_parent(dev);
-	struct dm_spi_slave_platdata *plat = dev_get_parent_plat(dev);
+	struct dm_spi_slave_plat *plat = dev_get_parent_plat(dev);
 	struct mscc_bb_priv *priv = dev_get_priv(bus);
 	u32             i, count;
 	const u8	*txd = dout;
diff --git a/drivers/spi/mvebu_a3700_spi.c b/drivers/spi/mvebu_a3700_spi.c
index 32a26d4..c40d7d1 100644
--- a/drivers/spi/mvebu_a3700_spi.c
+++ b/drivers/spi/mvebu_a3700_spi.c
@@ -38,13 +38,13 @@
 	u32 din;	/* 0x1060c */
 };
 
-struct mvebu_spi_platdata {
+struct mvebu_spi_plat {
 	struct spi_reg *spireg;
 	struct clk clk;
 	struct gpio_desc cs_gpios[MAX_CS_COUNT];
 };
 
-static void spi_cs_activate(struct mvebu_spi_platdata *plat, int cs)
+static void spi_cs_activate(struct mvebu_spi_plat *plat, int cs)
 {
 	if (CONFIG_IS_ENABLED(DM_GPIO) && dm_gpio_is_valid(&plat->cs_gpios[cs]))
 		dm_gpio_set_value(&plat->cs_gpios[cs], 1);
@@ -52,7 +52,7 @@
 		setbits_le32(&plat->spireg->ctrl, MVEBU_SPI_A3700_SPI_EN_0 << cs);
 }
 
-static void spi_cs_deactivate(struct mvebu_spi_platdata *plat, int cs)
+static void spi_cs_deactivate(struct mvebu_spi_plat *plat, int cs)
 {
 	if (CONFIG_IS_ENABLED(DM_GPIO) && dm_gpio_is_valid(&plat->cs_gpios[cs]))
 		dm_gpio_set_value(&plat->cs_gpios[cs], 0);
@@ -146,7 +146,7 @@
 			  const void *dout, void *din, unsigned long flags)
 {
 	struct udevice *bus = dev->parent;
-	struct mvebu_spi_platdata *plat = dev_get_plat(bus);
+	struct mvebu_spi_plat *plat = dev_get_plat(bus);
 	struct spi_reg *reg = plat->spireg;
 	unsigned int bytelen;
 	int ret;
@@ -186,7 +186,7 @@
 
 static int mvebu_spi_set_speed(struct udevice *bus, uint hz)
 {
-	struct mvebu_spi_platdata *plat = dev_get_plat(bus);
+	struct mvebu_spi_plat *plat = dev_get_plat(bus);
 	struct spi_reg *reg = plat->spireg;
 	u32 data, prescale;
 
@@ -207,7 +207,7 @@
 
 static int mvebu_spi_set_mode(struct udevice *bus, uint mode)
 {
-	struct mvebu_spi_platdata *plat = dev_get_plat(bus);
+	struct mvebu_spi_plat *plat = dev_get_plat(bus);
 	struct spi_reg *reg = plat->spireg;
 
 	/*
@@ -229,7 +229,7 @@
 
 static int mvebu_spi_probe(struct udevice *bus)
 {
-	struct mvebu_spi_platdata *plat = dev_get_plat(bus);
+	struct mvebu_spi_plat *plat = dev_get_plat(bus);
 	struct spi_reg *reg = plat->spireg;
 	u32 data;
 	int ret;
@@ -281,7 +281,7 @@
 
 static int mvebu_spi_of_to_plat(struct udevice *bus)
 {
-	struct mvebu_spi_platdata *plat = dev_get_plat(bus);
+	struct mvebu_spi_plat *plat = dev_get_plat(bus);
 	int ret;
 
 	plat->spireg = dev_read_addr_ptr(bus);
@@ -297,7 +297,7 @@
 
 static int mvebu_spi_remove(struct udevice *bus)
 {
-	struct mvebu_spi_platdata *plat = dev_get_plat(bus);
+	struct mvebu_spi_plat *plat = dev_get_plat(bus);
 
 	clk_free(&plat->clk);
 
@@ -325,7 +325,7 @@
 	.of_match = mvebu_spi_ids,
 	.ops = &mvebu_spi_ops,
 	.of_to_plat = mvebu_spi_of_to_plat,
-	.plat_auto	= sizeof(struct mvebu_spi_platdata),
+	.plat_auto	= sizeof(struct mvebu_spi_plat),
 	.probe = mvebu_spi_probe,
 	.remove = mvebu_spi_remove,
 };
diff --git a/drivers/spi/mxc_spi.c b/drivers/spi/mxc_spi.c
index af476c8..c5ffad8 100644
--- a/drivers/spi/mxc_spi.c
+++ b/drivers/spi/mxc_spi.c
@@ -69,7 +69,7 @@
 {
 #if CONFIG_IS_ENABLED(DM_SPI)
 	struct udevice *dev = mxcs->dev;
-	struct dm_spi_slave_platdata *slave_plat = dev_get_parent_plat(dev);
+	struct dm_spi_slave_plat *slave_plat = dev_get_parent_plat(dev);
 
 	u32 cs = slave_plat->cs;
 
@@ -87,7 +87,7 @@
 {
 #if CONFIG_IS_ENABLED(DM_SPI)
 	struct udevice *dev = mxcs->dev;
-	struct dm_spi_slave_platdata *slave_plat = dev_get_parent_plat(dev);
+	struct dm_spi_slave_plat *slave_plat = dev_get_parent_plat(dev);
 
 	u32 cs = slave_plat->cs;
 
@@ -559,7 +559,7 @@
 static int mxc_spi_claim_bus(struct udevice *dev)
 {
 	struct mxc_spi_slave *mxcs = dev_get_plat(dev->parent);
-	struct dm_spi_slave_platdata *slave_plat = dev_get_parent_plat(dev);
+	struct dm_spi_slave_plat *slave_plat = dev_get_parent_plat(dev);
 
 	mxcs->dev = dev;
 
diff --git a/drivers/spi/mxs_spi.c b/drivers/spi/mxs_spi.c
index 0973d51..4fafe33 100644
--- a/drivers/spi/mxs_spi.c
+++ b/drivers/spi/mxs_spi.c
@@ -41,7 +41,7 @@
 #define MXS_SSP_IMX23_CLKID_SSP0 33
 #define MXS_SSP_IMX28_CLKID_SSP0 46
 
-struct mxs_spi_platdata {
+struct mxs_spi_plat {
 #if CONFIG_IS_ENABLED(OF_PLATDATA)
 	struct dtd_fsl_imx23_spi dtplat;
 #endif
@@ -311,7 +311,7 @@
 
 static int mxs_spi_probe(struct udevice *bus)
 {
-	struct mxs_spi_platdata *plat = dev_get_plat(bus);
+	struct mxs_spi_plat *plat = dev_get_plat(bus);
 	struct mxs_spi_priv *priv = dev_get_priv(bus);
 	int ret;
 
@@ -443,7 +443,7 @@
 #if CONFIG_IS_ENABLED(OF_CONTROL) && !CONFIG_IS_ENABLED(OF_PLATDATA)
 static int mxs_of_to_plat(struct udevice *bus)
 {
-	struct mxs_spi_platdata *plat = bus->plat;
+	struct mxs_spi_plat *plat = bus->plat;
 	u32 prop[2];
 	int ret;
 
@@ -487,7 +487,7 @@
 	.of_match = mxs_spi_ids,
 	.of_to_plat = mxs_of_to_plat,
 #endif
-	.plat_auto	= sizeof(struct mxs_spi_platdata),
+	.plat_auto	= sizeof(struct mxs_spi_plat),
 	.ops	= &mxs_spi_ops,
 	.priv_auto	= sizeof(struct mxs_spi_priv),
 	.probe	= mxs_spi_probe,
diff --git a/drivers/spi/nxp_fspi.c b/drivers/spi/nxp_fspi.c
index 04a296a..006dd04 100644
--- a/drivers/spi/nxp_fspi.c
+++ b/drivers/spi/nxp_fspi.c
@@ -887,7 +887,7 @@
 {
 	struct nxp_fspi *f;
 	struct udevice *bus;
-	struct dm_spi_slave_platdata *slave_plat = dev_get_parent_plat(dev);
+	struct dm_spi_slave_plat *slave_plat = dev_get_parent_plat(dev);
 
 	bus = dev->parent;
 	f = dev_get_priv(bus);
diff --git a/drivers/spi/octeon_spi.c b/drivers/spi/octeon_spi.c
index 6466329..6e02a99 100644
--- a/drivers/spi/octeon_spi.c
+++ b/drivers/spi/octeon_spi.c
@@ -81,7 +81,7 @@
 
 static u64 octeon_spi_set_mpicfg(struct udevice *dev)
 {
-	struct dm_spi_slave_platdata *slave = dev_get_parent_plat(dev);
+	struct dm_spi_slave_plat *slave = dev_get_parent_plat(dev);
 	struct udevice *bus = dev_get_parent(dev);
 	struct octeon_spi *priv = dev_get_priv(bus);
 	u64 mpi_cfg;
diff --git a/drivers/spi/omap3_spi.c b/drivers/spi/omap3_spi.c
index 0594a9c..78e2a25 100644
--- a/drivers/spi/omap3_spi.c
+++ b/drivers/spi/omap3_spi.c
@@ -378,7 +378,7 @@
 {
 	struct udevice *bus = dev->parent;
 	struct omap3_spi_priv *priv = dev_get_priv(bus);
-	struct dm_spi_slave_platdata *slave_plat = dev_get_parent_plat(dev);
+	struct dm_spi_slave_plat *slave_plat = dev_get_parent_plat(dev);
 
 	priv->cs = slave_plat->cs;
 	priv->freq = slave_plat->max_hz;
@@ -402,7 +402,7 @@
 {
 	struct udevice *bus = dev->parent;
 	struct omap3_spi_priv *priv = dev_get_priv(bus);
-	struct dm_spi_slave_platdata *slave_plat = dev_get_parent_plat(dev);
+	struct dm_spi_slave_plat *slave_plat = dev_get_parent_plat(dev);
 
 	priv->cs = slave_plat->cs;
 	priv->wordlen = wordlen;
diff --git a/drivers/spi/pic32_spi.c b/drivers/spi/pic32_spi.c
index 463c13c..cd83c11 100644
--- a/drivers/spi/pic32_spi.c
+++ b/drivers/spi/pic32_spi.c
@@ -236,7 +236,7 @@
 			  const void *tx_buf, void *rx_buf,
 			  unsigned long flags)
 {
-	struct dm_spi_slave_platdata *slave_plat;
+	struct dm_spi_slave_plat *slave_plat;
 	struct udevice *bus = slave->parent;
 	struct pic32_spi_priv *priv;
 	int len = bitlen / 8;
diff --git a/drivers/spi/renesas_rpc_spi.c b/drivers/spi/renesas_rpc_spi.c
index 7a030b1..1057651 100644
--- a/drivers/spi/renesas_rpc_spi.c
+++ b/drivers/spi/renesas_rpc_spi.c
@@ -156,7 +156,7 @@
 
 DECLARE_GLOBAL_DATA_PTR;
 
-struct rpc_spi_platdata {
+struct rpc_spi_plat {
 	fdt_addr_t	regs;
 	fdt_addr_t	extr;
 	s32		freq;	/* Default clock freq, -1 for none */
@@ -406,7 +406,7 @@
 
 static int rpc_spi_probe(struct udevice *dev)
 {
-	struct rpc_spi_platdata *plat = dev_get_plat(dev);
+	struct rpc_spi_plat *plat = dev_get_plat(dev);
 	struct rpc_spi_priv *priv = dev_get_priv(dev);
 
 	priv->regs = plat->regs;
@@ -419,7 +419,7 @@
 
 static int rpc_spi_of_to_plat(struct udevice *bus)
 {
-	struct rpc_spi_platdata *plat = dev_get_plat(bus);
+	struct rpc_spi_plat *plat = dev_get_plat(bus);
 
 	plat->regs = dev_read_addr_index(bus, 0);
 	plat->extr = dev_read_addr_index(bus, 1);
@@ -464,7 +464,7 @@
 	.of_match	= rpc_spi_ids,
 	.ops		= &rpc_spi_ops,
 	.of_to_plat = rpc_spi_of_to_plat,
-	.plat_auto	= sizeof(struct rpc_spi_platdata),
+	.plat_auto	= sizeof(struct rpc_spi_plat),
 	.priv_auto	= sizeof(struct rpc_spi_priv),
 	.bind		= rpc_spi_bind,
 	.probe		= rpc_spi_probe,
diff --git a/drivers/spi/rk_spi.c b/drivers/spi/rk_spi.c
index 3a97fb5..64bb257 100644
--- a/drivers/spi/rk_spi.c
+++ b/drivers/spi/rk_spi.c
@@ -40,7 +40,7 @@
 	bool master_manages_fifo;
 };
 
-struct rockchip_spi_platdata {
+struct rockchip_spi_plat {
 #if CONFIG_IS_ENABLED(OF_PLATDATA)
 	struct dtd_rockchip_rk3288_spi of_plat;
 #endif
@@ -135,7 +135,7 @@
 static void spi_cs_activate(struct udevice *dev, uint cs)
 {
 	struct udevice *bus = dev->parent;
-	struct rockchip_spi_platdata *plat = bus->plat;
+	struct rockchip_spi_plat *plat = bus->plat;
 	struct rockchip_spi_priv *priv = dev_get_priv(bus);
 	struct rockchip_spi *regs = priv->regs;
 
@@ -161,7 +161,7 @@
 static void spi_cs_deactivate(struct udevice *dev, uint cs)
 {
 	struct udevice *bus = dev->parent;
-	struct rockchip_spi_platdata *plat = bus->plat;
+	struct rockchip_spi_plat *plat = bus->plat;
 	struct rockchip_spi_priv *priv = dev_get_priv(bus);
 	struct rockchip_spi *regs = priv->regs;
 
@@ -174,9 +174,9 @@
 }
 
 #if CONFIG_IS_ENABLED(OF_PLATDATA)
-static int conv_of_platdata(struct udevice *dev)
+static int conv_of_plat(struct udevice *dev)
 {
-	struct rockchip_spi_platdata *plat = dev->plat;
+	struct rockchip_spi_plat *plat = dev->plat;
 	struct dtd_rockchip_rk3288_spi *dtplat = &plat->of_plat;
 	struct rockchip_spi_priv *priv = dev_get_priv(dev);
 	int ret;
@@ -195,7 +195,7 @@
 static int rockchip_spi_of_to_plat(struct udevice *bus)
 {
 #if !CONFIG_IS_ENABLED(OF_PLATDATA)
-	struct rockchip_spi_platdata *plat = dev_get_plat(bus);
+	struct rockchip_spi_plat *plat = dev_get_plat(bus);
 	struct rockchip_spi_priv *priv = dev_get_priv(bus);
 	int ret;
 
@@ -253,13 +253,13 @@
 
 static int rockchip_spi_probe(struct udevice *bus)
 {
-	struct rockchip_spi_platdata *plat = dev_get_plat(bus);
+	struct rockchip_spi_plat *plat = dev_get_plat(bus);
 	struct rockchip_spi_priv *priv = dev_get_priv(bus);
 	int ret;
 
 	debug("%s: probe\n", __func__);
 #if CONFIG_IS_ENABLED(OF_PLATDATA)
-	ret = conv_of_platdata(bus);
+	ret = conv_of_plat(bus);
 	if (ret)
 		return ret;
 #endif
@@ -432,7 +432,7 @@
 	struct udevice *bus = dev->parent;
 	struct rockchip_spi_priv *priv = dev_get_priv(bus);
 	struct rockchip_spi *regs = priv->regs;
-	struct dm_spi_slave_platdata *slave_plat = dev_get_parent_plat(dev);
+	struct dm_spi_slave_plat *slave_plat = dev_get_parent_plat(dev);
 	int len = bitlen >> 3;
 	const u8 *out = dout;
 	u8 *in = din;
@@ -561,7 +561,7 @@
 	.of_match = rockchip_spi_ids,
 	.ops	= &rockchip_spi_ops,
 	.of_to_plat = rockchip_spi_of_to_plat,
-	.plat_auto	= sizeof(struct rockchip_spi_platdata),
+	.plat_auto	= sizeof(struct rockchip_spi_plat),
 	.priv_auto	= sizeof(struct rockchip_spi_priv),
 	.probe	= rockchip_spi_probe,
 };
diff --git a/drivers/spi/soft_spi.c b/drivers/spi/soft_spi.c
index d4a886a..afc98bf 100644
--- a/drivers/spi/soft_spi.c
+++ b/drivers/spi/soft_spi.c
@@ -22,7 +22,7 @@
 
 DECLARE_GLOBAL_DATA_PTR;
 
-struct soft_spi_platdata {
+struct soft_spi_plat {
 	struct gpio_desc cs;
 	struct gpio_desc sclk;
 	struct gpio_desc mosi;
@@ -41,7 +41,7 @@
 static int soft_spi_scl(struct udevice *dev, int bit)
 {
 	struct udevice *bus = dev_get_parent(dev);
-	struct soft_spi_platdata *plat = dev_get_plat(bus);
+	struct soft_spi_plat *plat = dev_get_plat(bus);
 
 	dm_gpio_set_value(&plat->sclk, bit);
 
@@ -51,7 +51,7 @@
 static int soft_spi_sda(struct udevice *dev, int bit)
 {
 	struct udevice *bus = dev_get_parent(dev);
-	struct soft_spi_platdata *plat = dev_get_plat(bus);
+	struct soft_spi_plat *plat = dev_get_plat(bus);
 
 	dm_gpio_set_value(&plat->mosi, bit);
 
@@ -62,7 +62,7 @@
 {
 	struct udevice *bus = dev_get_parent(dev);
 	struct soft_spi_priv *priv = dev_get_priv(bus);
-	struct soft_spi_platdata *plat = dev_get_plat(bus);
+	struct soft_spi_plat *plat = dev_get_plat(bus);
 	int cidle = !!(priv->mode & SPI_CPOL);
 
 	dm_gpio_set_value(&plat->cs, 0);
@@ -75,7 +75,7 @@
 static int soft_spi_cs_deactivate(struct udevice *dev)
 {
 	struct udevice *bus = dev_get_parent(dev);
-	struct soft_spi_platdata *plat = dev_get_plat(bus);
+	struct soft_spi_plat *plat = dev_get_plat(bus);
 
 	dm_gpio_set_value(&plat->cs, 0);
 
@@ -117,7 +117,7 @@
 {
 	struct udevice *bus = dev_get_parent(dev);
 	struct soft_spi_priv *priv = dev_get_priv(bus);
-	struct soft_spi_platdata *plat = dev_get_plat(bus);
+	struct soft_spi_plat *plat = dev_get_plat(bus);
 	uchar		tmpdin  = 0;
 	uchar		tmpdout = 0;
 	const u8	*txd = dout;
@@ -228,7 +228,7 @@
 
 static int soft_spi_of_to_plat(struct udevice *dev)
 {
-	struct soft_spi_platdata *plat = dev->plat;
+	struct soft_spi_plat *plat = dev->plat;
 	const void *blob = gd->fdt_blob;
 	int node = dev_of_offset(dev);
 
@@ -240,7 +240,7 @@
 static int soft_spi_probe(struct udevice *dev)
 {
 	struct spi_slave *slave = dev_get_parent_priv(dev);
-	struct soft_spi_platdata *plat = dev->plat;
+	struct soft_spi_plat *plat = dev->plat;
 	int cs_flags, clk_flags;
 	int ret;
 
@@ -281,7 +281,7 @@
 	.of_match = soft_spi_ids,
 	.ops	= &soft_spi_ops,
 	.of_to_plat = soft_spi_of_to_plat,
-	.plat_auto	= sizeof(struct soft_spi_platdata),
+	.plat_auto	= sizeof(struct soft_spi_plat),
 	.priv_auto	= sizeof(struct soft_spi_priv),
 	.probe	= soft_spi_probe,
 };
diff --git a/drivers/spi/spi-qup.c b/drivers/spi/spi-qup.c
index a549b66..cdea540 100644
--- a/drivers/spi/spi-qup.c
+++ b/drivers/spi/spi-qup.c
@@ -701,7 +701,7 @@
 						const void *dout, void *din, unsigned long flags)
 {
 	struct udevice *bus = dev_get_parent(dev);
-	struct dm_spi_slave_platdata *slave_plat = dev_get_parent_plat(dev);
+	struct dm_spi_slave_plat *slave_plat = dev_get_parent_plat(dev);
 	unsigned int len;
 	const u8 *txp = dout;
 	u8 *rxp = din;
diff --git a/drivers/spi/spi-sifive.c b/drivers/spi/spi-sifive.c
index 81cdfc0..0a00df0 100644
--- a/drivers/spi/spi-sifive.c
+++ b/drivers/spi/spi-sifive.c
@@ -105,7 +105,7 @@
 };
 
 static void sifive_spi_prep_device(struct sifive_spi *spi,
-				   struct dm_spi_slave_platdata *slave_plat)
+				   struct dm_spi_slave_plat *slave_plat)
 {
 	/* Update the chip select polarity */
 	if (slave_plat->mode & SPI_CS_HIGH)
@@ -119,7 +119,7 @@
 }
 
 static int sifive_spi_set_cs(struct sifive_spi *spi,
-			     struct dm_spi_slave_platdata *slave_plat)
+			     struct dm_spi_slave_plat *slave_plat)
 {
 	u32 cs_mode = SIFIVE_SPI_CSMODE_MODE_HOLD;
 
@@ -137,7 +137,7 @@
 }
 
 static void sifive_spi_prep_transfer(struct sifive_spi *spi,
-				     struct dm_spi_slave_platdata *slave_plat,
+				     struct dm_spi_slave_plat *slave_plat,
 				     u8 *rx_ptr)
 {
 	u32 cr;
@@ -212,7 +212,7 @@
 {
 	struct udevice *bus = dev->parent;
 	struct sifive_spi *spi = dev_get_priv(bus);
-	struct dm_spi_slave_platdata *slave_plat = dev_get_parent_plat(dev);
+	struct dm_spi_slave_plat *slave_plat = dev_get_parent_plat(dev);
 	const u8 *tx_ptr = dout;
 	u8 *rx_ptr = din;
 	u32 remaining_len;
diff --git a/drivers/spi/spi-sunxi.c b/drivers/spi/spi-sunxi.c
index 00703f9..1145380 100644
--- a/drivers/spi/spi-sunxi.c
+++ b/drivers/spi/spi-sunxi.c
@@ -122,7 +122,7 @@
 	bool has_burst_ctl;
 };
 
-struct sun4i_spi_platdata {
+struct sun4i_spi_plat {
 	struct sun4i_spi_variant *variant;
 	u32 base;
 	u32 max_hz;
@@ -339,7 +339,7 @@
 {
 	struct udevice *bus = dev->parent;
 	struct sun4i_spi_priv *priv = dev_get_priv(bus);
-	struct dm_spi_slave_platdata *slave_plat = dev_get_parent_plat(dev);
+	struct dm_spi_slave_plat *slave_plat = dev_get_parent_plat(dev);
 
 	u32 len = bitlen / 8;
 	u32 rx_fifocnt;
@@ -407,7 +407,7 @@
 
 static int sun4i_spi_set_speed(struct udevice *dev, uint speed)
 {
-	struct sun4i_spi_platdata *plat = dev_get_plat(dev);
+	struct sun4i_spi_plat *plat = dev_get_plat(dev);
 	struct sun4i_spi_priv *priv = dev_get_priv(dev);
 	unsigned int div;
 	u32 reg;
@@ -483,7 +483,7 @@
 
 static int sun4i_spi_probe(struct udevice *bus)
 {
-	struct sun4i_spi_platdata *plat = dev_get_plat(bus);
+	struct sun4i_spi_plat *plat = dev_get_plat(bus);
 	struct sun4i_spi_priv *priv = dev_get_priv(bus);
 	int ret;
 
@@ -516,7 +516,7 @@
 
 static int sun4i_spi_of_to_plat(struct udevice *bus)
 {
-	struct sun4i_spi_platdata *plat = dev_get_plat(bus);
+	struct sun4i_spi_plat *plat = dev_get_plat(bus);
 	int node = dev_of_offset(bus);
 
 	plat->base = dev_read_addr(bus);
@@ -631,7 +631,7 @@
 	.of_match	= sun4i_spi_ids,
 	.ops	= &sun4i_spi_ops,
 	.of_to_plat	= sun4i_spi_of_to_plat,
-	.plat_auto	= sizeof(struct sun4i_spi_platdata),
+	.plat_auto	= sizeof(struct sun4i_spi_plat),
 	.priv_auto	= sizeof(struct sun4i_spi_priv),
 	.probe	= sun4i_spi_probe,
 };
diff --git a/drivers/spi/spi-uclass.c b/drivers/spi/spi-uclass.c
index 0bba377..9dd32ab 100644
--- a/drivers/spi/spi-uclass.c
+++ b/drivers/spi/spi-uclass.c
@@ -153,7 +153,7 @@
 #if !CONFIG_IS_ENABLED(OF_PLATDATA)
 static int spi_child_post_bind(struct udevice *dev)
 {
-	struct dm_spi_slave_platdata *plat = dev_get_parent_plat(dev);
+	struct dm_spi_slave_plat *plat = dev_get_parent_plat(dev);
 
 	if (!dev_of_valid(dev))
 		return 0;
@@ -197,7 +197,7 @@
 
 static int spi_child_pre_probe(struct udevice *dev)
 {
-	struct dm_spi_slave_platdata *plat = dev_get_parent_plat(dev);
+	struct dm_spi_slave_plat *plat = dev_get_parent_plat(dev);
 	struct spi_slave *slave = dev_get_parent_priv(dev);
 
 	/*
@@ -218,7 +218,7 @@
 
 int spi_chip_select(struct udevice *dev)
 {
-	struct dm_spi_slave_platdata *plat = dev_get_parent_plat(dev);
+	struct dm_spi_slave_plat *plat = dev_get_parent_plat(dev);
 
 	return plat ? plat->cs : -ENOENT;
 }
@@ -254,7 +254,7 @@
 
 	for (device_find_first_child(bus, &dev); dev;
 	     device_find_next_child(&dev)) {
-		struct dm_spi_slave_platdata *plat;
+		struct dm_spi_slave_plat *plat;
 
 		plat = dev_get_parent_plat(dev);
 		debug("%s: plat=%p, cs=%d\n", __func__, plat, plat->cs);
@@ -323,7 +323,7 @@
 		       struct udevice **busp, struct spi_slave **devp)
 {
 	struct udevice *bus, *dev;
-	struct dm_spi_slave_platdata *plat;
+	struct dm_spi_slave_plat *plat;
 	struct spi_slave *slave;
 	bool created = false;
 	int ret;
@@ -431,8 +431,7 @@
 	slave->dev = NULL;
 }
 
-int spi_slave_of_to_plat(struct udevice *dev,
-			 struct dm_spi_slave_platdata *plat)
+int spi_slave_of_to_plat(struct udevice *dev, struct dm_spi_slave_plat *plat)
 {
 	int mode = 0;
 	int value;
@@ -504,7 +503,7 @@
 	.child_pre_probe = spi_child_pre_probe,
 	.per_device_auto	= sizeof(struct dm_spi_bus),
 	.per_child_auto	= sizeof(struct spi_slave),
-	.per_child_plat_auto	= sizeof(struct dm_spi_slave_platdata),
+	.per_child_plat_auto	= sizeof(struct dm_spi_slave_plat),
 #if !CONFIG_IS_ENABLED(OF_PLATDATA)
 	.child_post_bind = spi_child_post_bind,
 #endif
diff --git a/drivers/spi/stm32_qspi.c b/drivers/spi/stm32_qspi.c
index 4d67e9b..4400857 100644
--- a/drivers/spi/stm32_qspi.c
+++ b/drivers/spi/stm32_qspi.c
@@ -400,7 +400,7 @@
 static int stm32_qspi_claim_bus(struct udevice *dev)
 {
 	struct stm32_qspi_priv *priv = dev_get_priv(dev->parent);
-	struct dm_spi_slave_platdata *slave_plat = dev_get_parent_plat(dev);
+	struct dm_spi_slave_plat *slave_plat = dev_get_parent_plat(dev);
 	int slave_cs = slave_plat->cs;
 
 	if (slave_cs >= STM32_QSPI_MAX_CHIP)
diff --git a/drivers/spi/stm32_spi.c b/drivers/spi/stm32_spi.c
index d2c2262..720103d 100644
--- a/drivers/spi/stm32_spi.c
+++ b/drivers/spi/stm32_spi.c
@@ -362,7 +362,7 @@
 			  const void *dout, void *din, unsigned long flags)
 {
 	struct udevice *bus = dev_get_parent(slave);
-	struct dm_spi_slave_platdata *slave_plat;
+	struct dm_spi_slave_plat *slave_plat;
 	struct stm32_spi_priv *priv = dev_get_priv(bus);
 	u32 sr;
 	u32 ifcr = 0;
diff --git a/drivers/spi/tegra114_spi.c b/drivers/spi/tegra114_spi.c
index 0798db7..2bfa262 100644
--- a/drivers/spi/tegra114_spi.c
+++ b/drivers/spi/tegra114_spi.c
@@ -99,7 +99,7 @@
 
 static int tegra114_spi_of_to_plat(struct udevice *bus)
 {
-	struct tegra_spi_platdata *plat = bus->plat;
+	struct tegra_spi_plat *plat = bus->plat;
 
 	plat->base = dev_read_addr(bus);
 	plat->periph_id = clock_decode_periph_id(bus);
@@ -124,7 +124,7 @@
 
 static int tegra114_spi_probe(struct udevice *bus)
 {
-	struct tegra_spi_platdata *plat = dev_get_plat(bus);
+	struct tegra_spi_plat *plat = dev_get_plat(bus);
 	struct tegra114_spi_priv *priv = dev_get_priv(bus);
 	struct spi_regs *regs;
 	ulong rate;
@@ -181,7 +181,7 @@
 static void spi_cs_activate(struct udevice *dev)
 {
 	struct udevice *bus = dev->parent;
-	struct tegra_spi_platdata *pdata = dev_get_plat(bus);
+	struct tegra_spi_plat *pdata = dev_get_plat(bus);
 	struct tegra114_spi_priv *priv = dev_get_priv(bus);
 
 	/* If it's too soon to do another transaction, wait */
@@ -205,7 +205,7 @@
 static void spi_cs_deactivate(struct udevice *dev)
 {
 	struct udevice *bus = dev->parent;
-	struct tegra_spi_platdata *pdata = dev_get_plat(bus);
+	struct tegra_spi_plat *pdata = dev_get_plat(bus);
 	struct tegra114_spi_priv *priv = dev_get_priv(bus);
 
 	setbits_le32(&priv->regs->command1, SPI_CMD1_CS_SW_VAL);
@@ -352,7 +352,7 @@
 
 static int tegra114_spi_set_speed(struct udevice *bus, uint speed)
 {
-	struct tegra_spi_platdata *plat = bus->plat;
+	struct tegra_spi_plat *plat = bus->plat;
 	struct tegra114_spi_priv *priv = dev_get_priv(bus);
 
 	if (speed > plat->frequency)
@@ -394,7 +394,7 @@
 	.of_match = tegra114_spi_ids,
 	.ops	= &tegra114_spi_ops,
 	.of_to_plat = tegra114_spi_of_to_plat,
-	.plat_auto	= sizeof(struct tegra_spi_platdata),
+	.plat_auto	= sizeof(struct tegra_spi_plat),
 	.priv_auto	= sizeof(struct tegra114_spi_priv),
 	.probe	= tegra114_spi_probe,
 };
diff --git a/drivers/spi/tegra20_sflash.c b/drivers/spi/tegra20_sflash.c
index d27f679..ad19a4e 100644
--- a/drivers/spi/tegra20_sflash.c
+++ b/drivers/spi/tegra20_sflash.c
@@ -89,7 +89,7 @@
 
 static int tegra20_sflash_of_to_plat(struct udevice *bus)
 {
-	struct tegra_spi_platdata *plat = bus->plat;
+	struct tegra_spi_plat *plat = bus->plat;
 	const void *blob = gd->fdt_blob;
 	int node = dev_of_offset(bus);
 
@@ -116,7 +116,7 @@
 
 static int tegra20_sflash_probe(struct udevice *bus)
 {
-	struct tegra_spi_platdata *plat = dev_get_plat(bus);
+	struct tegra_spi_plat *plat = dev_get_plat(bus);
 	struct tegra20_sflash_priv *priv = dev_get_priv(bus);
 
 	priv->regs = (struct spi_regs *)plat->base;
@@ -173,7 +173,7 @@
 static void spi_cs_activate(struct udevice *dev)
 {
 	struct udevice *bus = dev->parent;
-	struct tegra_spi_platdata *pdata = dev_get_plat(bus);
+	struct tegra_spi_plat *pdata = dev_get_plat(bus);
 	struct tegra20_sflash_priv *priv = dev_get_priv(bus);
 
 	/* If it's too soon to do another transaction, wait */
@@ -192,7 +192,7 @@
 static void spi_cs_deactivate(struct udevice *dev)
 {
 	struct udevice *bus = dev->parent;
-	struct tegra_spi_platdata *pdata = dev_get_plat(bus);
+	struct tegra_spi_plat *pdata = dev_get_plat(bus);
 	struct tegra20_sflash_priv *priv = dev_get_priv(bus);
 
 	/* CS is negated on Tegra, so drive a 0 to get a 1 */
@@ -314,7 +314,7 @@
 
 static int tegra20_sflash_set_speed(struct udevice *bus, uint speed)
 {
-	struct tegra_spi_platdata *plat = bus->plat;
+	struct tegra_spi_plat *plat = bus->plat;
 	struct tegra20_sflash_priv *priv = dev_get_priv(bus);
 
 	if (speed > plat->frequency)
@@ -354,7 +354,7 @@
 	.of_match = tegra20_sflash_ids,
 	.ops	= &tegra20_sflash_ops,
 	.of_to_plat = tegra20_sflash_of_to_plat,
-	.plat_auto	= sizeof(struct tegra_spi_platdata),
+	.plat_auto	= sizeof(struct tegra_spi_plat),
 	.priv_auto	= sizeof(struct tegra20_sflash_priv),
 	.probe	= tegra20_sflash_probe,
 };
diff --git a/drivers/spi/tegra20_slink.c b/drivers/spi/tegra20_slink.c
index 1a26e5c..57994d2 100644
--- a/drivers/spi/tegra20_slink.c
+++ b/drivers/spi/tegra20_slink.c
@@ -95,7 +95,7 @@
 
 static int tegra30_spi_of_to_plat(struct udevice *bus)
 {
-	struct tegra_spi_platdata *plat = bus->plat;
+	struct tegra_spi_plat *plat = bus->plat;
 	const void *blob = gd->fdt_blob;
 	int node = dev_of_offset(bus);
 
@@ -122,7 +122,7 @@
 
 static int tegra30_spi_probe(struct udevice *bus)
 {
-	struct tegra_spi_platdata *plat = dev_get_plat(bus);
+	struct tegra_spi_plat *plat = dev_get_plat(bus);
 	struct tegra30_spi_priv *priv = dev_get_priv(bus);
 
 	priv->regs = (struct spi_regs *)plat->base;
@@ -167,7 +167,7 @@
 static void spi_cs_activate(struct udevice *dev)
 {
 	struct udevice *bus = dev->parent;
-	struct tegra_spi_platdata *pdata = dev_get_plat(bus);
+	struct tegra_spi_plat *pdata = dev_get_plat(bus);
 	struct tegra30_spi_priv *priv = dev_get_priv(bus);
 
 	/* If it's too soon to do another transaction, wait */
@@ -186,7 +186,7 @@
 static void spi_cs_deactivate(struct udevice *dev)
 {
 	struct udevice *bus = dev->parent;
-	struct tegra_spi_platdata *pdata = dev_get_plat(bus);
+	struct tegra_spi_plat *pdata = dev_get_plat(bus);
 	struct tegra30_spi_priv *priv = dev_get_priv(bus);
 
 	/* CS is negated on Tegra, so drive a 0 to get a 1 */
@@ -314,7 +314,7 @@
 
 static int tegra30_spi_set_speed(struct udevice *bus, uint speed)
 {
-	struct tegra_spi_platdata *plat = bus->plat;
+	struct tegra_spi_plat *plat = bus->plat;
 	struct tegra30_spi_priv *priv = dev_get_priv(bus);
 
 	if (speed > plat->frequency)
@@ -373,7 +373,7 @@
 	.of_match = tegra30_spi_ids,
 	.ops	= &tegra30_spi_ops,
 	.of_to_plat = tegra30_spi_of_to_plat,
-	.plat_auto	= sizeof(struct tegra_spi_platdata),
+	.plat_auto	= sizeof(struct tegra_spi_plat),
 	.priv_auto	= sizeof(struct tegra30_spi_priv),
 	.probe	= tegra30_spi_probe,
 };
diff --git a/drivers/spi/tegra210_qspi.c b/drivers/spi/tegra210_qspi.c
index 99a5319..2baa2ce 100644
--- a/drivers/spi/tegra210_qspi.c
+++ b/drivers/spi/tegra210_qspi.c
@@ -99,7 +99,7 @@
 
 static int tegra210_qspi_of_to_plat(struct udevice *bus)
 {
-	struct tegra_spi_platdata *plat = bus->plat;
+	struct tegra_spi_plat *plat = bus->plat;
 
 	plat->base = dev_read_addr(bus);
 	plat->periph_id = clock_decode_periph_id(bus);
@@ -125,7 +125,7 @@
 
 static int tegra210_qspi_probe(struct udevice *bus)
 {
-	struct tegra_spi_platdata *plat = dev_get_plat(bus);
+	struct tegra_spi_plat *plat = dev_get_plat(bus);
 	struct tegra210_qspi_priv *priv = dev_get_priv(bus);
 
 	priv->regs = (struct qspi_regs *)plat->base;
@@ -174,7 +174,7 @@
 static void spi_cs_activate(struct udevice *dev)
 {
 	struct udevice *bus = dev->parent;
-	struct tegra_spi_platdata *pdata = dev_get_plat(bus);
+	struct tegra_spi_plat *pdata = dev_get_plat(bus);
 	struct tegra210_qspi_priv *priv = dev_get_priv(bus);
 
 	/* If it's too soon to do another transaction, wait */
@@ -198,7 +198,7 @@
 static void spi_cs_deactivate(struct udevice *dev)
 {
 	struct udevice *bus = dev->parent;
-	struct tegra_spi_platdata *pdata = dev_get_plat(bus);
+	struct tegra_spi_plat *pdata = dev_get_plat(bus);
 	struct tegra210_qspi_priv *priv = dev_get_priv(bus);
 
 	setbits_le32(&priv->regs->command1, QSPI_CMD1_CS_SW_VAL);
@@ -380,7 +380,7 @@
 
 static int tegra210_qspi_set_speed(struct udevice *bus, uint speed)
 {
-	struct tegra_spi_platdata *plat = bus->plat;
+	struct tegra_spi_plat *plat = bus->plat;
 	struct tegra210_qspi_priv *priv = dev_get_priv(bus);
 
 	if (speed > plat->frequency)
@@ -423,7 +423,7 @@
 	.of_match = tegra210_qspi_ids,
 	.ops = &tegra210_qspi_ops,
 	.of_to_plat = tegra210_qspi_of_to_plat,
-	.plat_auto	= sizeof(struct tegra_spi_platdata),
+	.plat_auto	= sizeof(struct tegra_spi_plat),
 	.priv_auto	= sizeof(struct tegra210_qspi_priv),
 	.per_child_auto	= sizeof(struct spi_slave),
 	.probe = tegra210_qspi_probe,
diff --git a/drivers/spi/tegra_spi.h b/drivers/spi/tegra_spi.h
index e997d66..ab69ea4 100644
--- a/drivers/spi/tegra_spi.h
+++ b/drivers/spi/tegra_spi.h
@@ -3,7 +3,7 @@
  * (C) Copyright 2014 Google, Inc
  */
 
-struct tegra_spi_platdata {
+struct tegra_spi_plat {
 	enum periph_id periph_id;
 	int frequency;		/* Default clock frequency, -1 for none */
 	ulong base;
diff --git a/drivers/spi/ti_qspi.c b/drivers/spi/ti_qspi.c
index f1511c0..7c3b1f7 100644
--- a/drivers/spi/ti_qspi.c
+++ b/drivers/spi/ti_qspi.c
@@ -154,7 +154,7 @@
 static int ti_qspi_xfer(struct udevice *dev, unsigned int bitlen,
 			const void *dout, void *din, unsigned long flags)
 {
-	struct dm_spi_slave_platdata *slave = dev_get_parent_plat(dev);
+	struct dm_spi_slave_plat *slave = dev_get_parent_plat(dev);
 	struct ti_qspi_priv *priv;
 	struct udevice *bus;
 	uint words = bitlen >> 3; /* fixed 8-bit word length */
@@ -323,7 +323,7 @@
 static int ti_qspi_exec_mem_op(struct spi_slave *slave,
 			       const struct spi_mem_op *op)
 {
-	struct dm_spi_slave_platdata *slave_plat;
+	struct dm_spi_slave_plat *slave_plat;
 	struct ti_qspi_priv *priv;
 	struct udevice *bus;
 	u32 from = 0;
@@ -355,7 +355,7 @@
 
 static int ti_qspi_claim_bus(struct udevice *dev)
 {
-	struct dm_spi_slave_platdata *slave_plat = dev_get_parent_plat(dev);
+	struct dm_spi_slave_plat *slave_plat = dev_get_parent_plat(dev);
 	struct ti_qspi_priv *priv;
 	struct udevice *bus;
 
@@ -384,7 +384,7 @@
 
 static int ti_qspi_release_bus(struct udevice *dev)
 {
-	struct dm_spi_slave_platdata *slave_plat = dev_get_parent_plat(dev);
+	struct dm_spi_slave_plat *slave_plat = dev_get_parent_plat(dev);
 	struct ti_qspi_priv *priv;
 	struct udevice *bus;
 
diff --git a/drivers/spi/uniphier_spi.c b/drivers/spi/uniphier_spi.c
index b6083e6..48b8430 100644
--- a/drivers/spi/uniphier_spi.c
+++ b/drivers/spi/uniphier_spi.c
@@ -68,7 +68,7 @@
 
 #define SSI_CLK			50000000	/* internal I/O clock: 50MHz */
 
-struct uniphier_spi_platdata {
+struct uniphier_spi_plat {
 	void __iomem *base;
 	u32 frequency;			/* input frequency */
 	u32 speed_hz;
@@ -113,7 +113,7 @@
 static void spi_cs_activate(struct udevice *dev)
 {
 	struct udevice *bus = dev->parent;
-	struct uniphier_spi_platdata *plat = bus->plat;
+	struct uniphier_spi_plat *plat = bus->plat;
 	struct uniphier_spi_priv *priv = dev_get_priv(bus);
 	ulong delay_us;		/* The delay completed so far */
 	u32 val;
@@ -139,7 +139,7 @@
 static void spi_cs_deactivate(struct udevice *dev)
 {
 	struct udevice *bus = dev->parent;
-	struct uniphier_spi_platdata *plat = bus->plat;
+	struct uniphier_spi_plat *plat = bus->plat;
 	struct uniphier_spi_priv *priv = dev_get_priv(bus);
 	u32 val;
 
@@ -279,7 +279,7 @@
 
 static int uniphier_spi_set_speed(struct udevice *bus, uint speed)
 {
-	struct uniphier_spi_platdata *plat = bus->plat;
+	struct uniphier_spi_plat *plat = bus->plat;
 	struct uniphier_spi_priv *priv = dev_get_priv(bus);
 	u32 val, ckdiv;
 
@@ -364,7 +364,7 @@
 
 static int uniphier_spi_of_to_plat(struct udevice *bus)
 {
-	struct uniphier_spi_platdata *plat = bus->plat;
+	struct uniphier_spi_plat *plat = bus->plat;
 	const void *blob = gd->fdt_blob;
 	int node = dev_of_offset(bus);
 
@@ -383,7 +383,7 @@
 
 static int uniphier_spi_probe(struct udevice *bus)
 {
-	struct uniphier_spi_platdata *plat = dev_get_plat(bus);
+	struct uniphier_spi_plat *plat = dev_get_plat(bus);
 	struct uniphier_spi_priv *priv = dev_get_priv(bus);
 
 	priv->base = plat->base;
@@ -412,7 +412,7 @@
 	.of_match = uniphier_spi_ids,
 	.ops	= &uniphier_spi_ops,
 	.of_to_plat = uniphier_spi_of_to_plat,
-	.plat_auto	= sizeof(struct uniphier_spi_platdata),
+	.plat_auto	= sizeof(struct uniphier_spi_plat),
 	.priv_auto	= sizeof(struct uniphier_spi_priv),
 	.probe	= uniphier_spi_probe,
 };
diff --git a/drivers/spi/xilinx_spi.c b/drivers/spi/xilinx_spi.c
index 7e0939c..b32cdac 100644
--- a/drivers/spi/xilinx_spi.c
+++ b/drivers/spi/xilinx_spi.c
@@ -211,7 +211,7 @@
 	struct udevice *bus = dev_get_parent(dev);
 	struct xilinx_spi_priv *priv = dev_get_priv(bus);
 	struct xilinx_spi_regs *regs = priv->regs;
-	struct dm_spi_slave_platdata *slave_plat = dev_get_parent_plat(dev);
+	struct dm_spi_slave_plat *slave_plat = dev_get_parent_plat(dev);
 	const unsigned char *txp = dout;
 	unsigned char *rxp = din;
 	u32 reg;
@@ -244,7 +244,7 @@
 	struct udevice *bus = dev_get_parent(dev);
 	struct xilinx_spi_priv *priv = dev_get_priv(bus);
 	struct xilinx_spi_regs *regs = priv->regs;
-	struct dm_spi_slave_platdata *slave_plat = dev_get_parent_plat(dev);
+	struct dm_spi_slave_plat *slave_plat = dev_get_parent_plat(dev);
 	/* assume spi core configured to do 8 bit transfers */
 	unsigned int bytes = bitlen / XILSPI_MAX_XFER_BITS;
 	const unsigned char *txp = dout;
diff --git a/drivers/spi/zynq_qspi.c b/drivers/spi/zynq_qspi.c
index 7da7903..c2ae4e9 100644
--- a/drivers/spi/zynq_qspi.c
+++ b/drivers/spi/zynq_qspi.c
@@ -76,7 +76,7 @@
 };
 
 /* zynq qspi platform data */
-struct zynq_qspi_platdata {
+struct zynq_qspi_plat {
 	struct zynq_qspi_regs *regs;
 	u32 frequency;          /* input frequency */
 	u32 speed_hz;
@@ -100,7 +100,7 @@
 
 static int zynq_qspi_of_to_plat(struct udevice *bus)
 {
-	struct zynq_qspi_platdata *plat = bus->plat;
+	struct zynq_qspi_plat *plat = bus->plat;
 	const void *blob = gd->fdt_blob;
 	int node = dev_of_offset(bus);
 
@@ -171,7 +171,7 @@
 
 static int zynq_qspi_probe(struct udevice *bus)
 {
-	struct zynq_qspi_platdata *plat = dev_get_plat(bus);
+	struct zynq_qspi_plat *plat = dev_get_plat(bus);
 	struct zynq_qspi_priv *priv = dev_get_priv(bus);
 	struct clk clk;
 	unsigned long clock;
@@ -560,7 +560,7 @@
 {
 	struct udevice *bus = dev->parent;
 	struct zynq_qspi_priv *priv = dev_get_priv(bus);
-	struct dm_spi_slave_platdata *slave_plat = dev_get_parent_plat(dev);
+	struct dm_spi_slave_plat *slave_plat = dev_get_parent_plat(dev);
 
 	priv->cs = slave_plat->cs;
 	priv->tx_buf = dout;
@@ -592,7 +592,7 @@
 
 static int zynq_qspi_set_speed(struct udevice *bus, uint speed)
 {
-	struct zynq_qspi_platdata *plat = bus->plat;
+	struct zynq_qspi_plat *plat = bus->plat;
 	struct zynq_qspi_priv *priv = dev_get_priv(bus);
 	struct zynq_qspi_regs *regs = priv->regs;
 	uint32_t confr;
@@ -667,7 +667,7 @@
 	.of_match = zynq_qspi_ids,
 	.ops    = &zynq_qspi_ops,
 	.of_to_plat = zynq_qspi_of_to_plat,
-	.plat_auto	= sizeof(struct zynq_qspi_platdata),
+	.plat_auto	= sizeof(struct zynq_qspi_plat),
 	.priv_auto	= sizeof(struct zynq_qspi_priv),
 	.probe  = zynq_qspi_probe,
 };
diff --git a/drivers/spi/zynq_spi.c b/drivers/spi/zynq_spi.c
index 285b006..281db45 100644
--- a/drivers/spi/zynq_spi.c
+++ b/drivers/spi/zynq_spi.c
@@ -55,7 +55,7 @@
 
 
 /* zynq spi platform data */
-struct zynq_spi_platdata {
+struct zynq_spi_plat {
 	struct zynq_spi_regs *regs;
 	u32 frequency;		/* input frequency */
 	u32 speed_hz;
@@ -75,7 +75,7 @@
 
 static int zynq_spi_of_to_plat(struct udevice *bus)
 {
-	struct zynq_spi_platdata *plat = bus->plat;
+	struct zynq_spi_plat *plat = bus->plat;
 	const void *blob = gd->fdt_blob;
 	int node = dev_of_offset(bus);
 
@@ -121,7 +121,7 @@
 
 static int zynq_spi_probe(struct udevice *bus)
 {
-	struct zynq_spi_platdata *plat = dev_get_plat(bus);
+	struct zynq_spi_plat *plat = dev_get_plat(bus);
 	struct zynq_spi_priv *priv = dev_get_priv(bus);
 	struct clk clk;
 	unsigned long clock;
@@ -162,7 +162,7 @@
 static void spi_cs_activate(struct udevice *dev)
 {
 	struct udevice *bus = dev->parent;
-	struct zynq_spi_platdata *plat = bus->plat;
+	struct zynq_spi_plat *plat = bus->plat;
 	struct zynq_spi_priv *priv = dev_get_priv(bus);
 	struct zynq_spi_regs *regs = priv->regs;
 	u32 cr;
@@ -193,7 +193,7 @@
 static void spi_cs_deactivate(struct udevice *dev)
 {
 	struct udevice *bus = dev->parent;
-	struct zynq_spi_platdata *plat = bus->plat;
+	struct zynq_spi_plat *plat = bus->plat;
 	struct zynq_spi_priv *priv = dev_get_priv(bus);
 	struct zynq_spi_regs *regs = priv->regs;
 
@@ -234,7 +234,7 @@
 	struct udevice *bus = dev->parent;
 	struct zynq_spi_priv *priv = dev_get_priv(bus);
 	struct zynq_spi_regs *regs = priv->regs;
-	struct dm_spi_slave_platdata *slave_plat = dev_get_parent_plat(dev);
+	struct dm_spi_slave_plat *slave_plat = dev_get_parent_plat(dev);
 	u32 len = bitlen / 8;
 	u32 tx_len = len, rx_len = len, tx_tvl;
 	const u8 *tx_buf = dout;
@@ -296,7 +296,7 @@
 
 static int zynq_spi_set_speed(struct udevice *bus, uint speed)
 {
-	struct zynq_spi_platdata *plat = bus->plat;
+	struct zynq_spi_plat *plat = bus->plat;
 	struct zynq_spi_priv *priv = dev_get_priv(bus);
 	struct zynq_spi_regs *regs = priv->regs;
 	uint32_t confr;
@@ -372,7 +372,7 @@
 	.of_match = zynq_spi_ids,
 	.ops	= &zynq_spi_ops,
 	.of_to_plat = zynq_spi_of_to_plat,
-	.plat_auto	= sizeof(struct zynq_spi_platdata),
+	.plat_auto	= sizeof(struct zynq_spi_plat),
 	.priv_auto	= sizeof(struct zynq_spi_priv),
 	.probe	= zynq_spi_probe,
 };
diff --git a/drivers/spi/zynqmp_gqspi.c b/drivers/spi/zynqmp_gqspi.c
index e3bfc6e..f09c507 100644
--- a/drivers/spi/zynqmp_gqspi.c
+++ b/drivers/spi/zynqmp_gqspi.c
@@ -156,7 +156,7 @@
 
 DECLARE_GLOBAL_DATA_PTR;
 
-struct zynqmp_qspi_platdata {
+struct zynqmp_qspi_plat {
 	struct zynqmp_qspi_regs *regs;
 	struct zynqmp_qspi_dma_regs *dma_regs;
 	u32 frequency;
@@ -177,7 +177,7 @@
 
 static int zynqmp_qspi_of_to_plat(struct udevice *bus)
 {
-	struct zynqmp_qspi_platdata *plat = bus->plat;
+	struct zynqmp_qspi_plat *plat = bus->plat;
 
 	debug("%s\n", __func__);
 
@@ -255,7 +255,7 @@
 
 void zynqmp_qspi_set_tapdelay(struct udevice *bus, u32 baudrateval)
 {
-	struct zynqmp_qspi_platdata *plat = bus->plat;
+	struct zynqmp_qspi_plat *plat = bus->plat;
 	struct zynqmp_qspi_priv *priv = dev_get_priv(bus);
 	struct zynqmp_qspi_regs *regs = priv->regs;
 	u32 tapdlybypass = 0, lpbkdlyadj = 0, datadlyadj = 0, clk_rate;
@@ -295,7 +295,7 @@
 
 static int zynqmp_qspi_set_speed(struct udevice *bus, uint speed)
 {
-	struct zynqmp_qspi_platdata *plat = bus->plat;
+	struct zynqmp_qspi_plat *plat = bus->plat;
 	struct zynqmp_qspi_priv *priv = dev_get_priv(bus);
 	struct zynqmp_qspi_regs *regs = priv->regs;
 	u32 confr;
@@ -333,7 +333,7 @@
 
 static int zynqmp_qspi_probe(struct udevice *bus)
 {
-	struct zynqmp_qspi_platdata *plat = dev_get_plat(bus);
+	struct zynqmp_qspi_plat *plat = dev_get_plat(bus);
 	struct zynqmp_qspi_priv *priv = dev_get_priv(bus);
 	struct clk clk;
 	unsigned long clock;
@@ -728,7 +728,7 @@
 	.of_match = zynqmp_qspi_ids,
 	.ops    = &zynqmp_qspi_ops,
 	.of_to_plat = zynqmp_qspi_of_to_plat,
-	.plat_auto	= sizeof(struct zynqmp_qspi_platdata),
+	.plat_auto	= sizeof(struct zynqmp_qspi_plat),
 	.priv_auto	= sizeof(struct zynqmp_qspi_priv),
 	.probe  = zynqmp_qspi_probe,
 };
diff --git a/drivers/sysreset/sysreset_x86.c b/drivers/sysreset/sysreset_x86.c
index e51ce1b..8f99703 100644
--- a/drivers/sysreset/sysreset_x86.c
+++ b/drivers/sysreset/sysreset_x86.c
@@ -14,7 +14,7 @@
 #include <asm/io.h>
 #include <asm/processor.h>
 
-struct x86_sysreset_platdata {
+struct x86_sysreset_plat {
 	struct udevice *pch;
 };
 
@@ -30,7 +30,7 @@
  */
 int pch_sysreset_power_off(struct udevice *dev)
 {
-	struct x86_sysreset_platdata *plat = dev_get_plat(dev);
+	struct x86_sysreset_plat *plat = dev_get_plat(dev);
 	struct pch_pmbase_info pm;
 	u32 reg32;
 	int ret;
@@ -130,7 +130,7 @@
 
 static int x86_sysreset_probe(struct udevice *dev)
 {
-	struct x86_sysreset_platdata *plat = dev_get_plat(dev);
+	struct x86_sysreset_plat *plat = dev_get_plat(dev);
 
 	/* Locate the PCH if there is one. It isn't essential */
 	uclass_first_device(UCLASS_PCH, &plat->pch);
@@ -154,5 +154,5 @@
 	.of_match = x86_sysreset_ids,
 	.ops = &x86_sysreset_ops,
 	.probe = x86_sysreset_probe,
-	.plat_auto	= sizeof(struct x86_sysreset_platdata),
+	.plat_auto	= sizeof(struct x86_sysreset_plat),
 };
diff --git a/drivers/timer/ag101p_timer.c b/drivers/timer/ag101p_timer.c
index bc99fde..1717434 100644
--- a/drivers/timer/ag101p_timer.c
+++ b/drivers/timer/ag101p_timer.c
@@ -58,13 +58,13 @@
 	u32	int_mask;		/* 0x38 */
 };
 
-struct atftmr_timer_platdata {
+struct atftmr_timer_plat {
 	struct atftmr_timer_regs *regs;
 };
 
 static u64 atftmr_timer_get_count(struct udevice *dev)
 {
-	struct atftmr_timer_platdata *plat = dev->plat;
+	struct atftmr_timer_plat *plat = dev->plat;
 	struct atftmr_timer_regs *const regs = plat->regs;
 	u32 val;
 	val = readl(&regs->t3_counter);
@@ -73,7 +73,7 @@
 
 static int atftmr_timer_probe(struct udevice *dev)
 {
-	struct atftmr_timer_platdata *plat = dev->plat;
+	struct atftmr_timer_plat *plat = dev->plat;
 	struct atftmr_timer_regs *const regs = plat->regs;
 	u32 cr;
 	writel(0, &regs->t3_load);
@@ -90,7 +90,7 @@
 
 static int atftme_timer_of_to_plat(struct udevice *dev)
 {
-	struct atftmr_timer_platdata *plat = dev_get_plat(dev);
+	struct atftmr_timer_plat *plat = dev_get_plat(dev);
 	plat->regs = map_physmem(dev_read_addr(dev),
 				 sizeof(struct atftmr_timer_regs),
 				 MAP_NOCACHE);
@@ -111,7 +111,7 @@
 	.id	= UCLASS_TIMER,
 	.of_match = ag101p_timer_ids,
 	.of_to_plat = atftme_timer_of_to_plat,
-	.plat_auto	= sizeof(struct atftmr_timer_platdata),
+	.plat_auto	= sizeof(struct atftmr_timer_plat),
 	.probe = atftmr_timer_probe,
 	.ops	= &ag101p_timer_ops,
 };
diff --git a/drivers/timer/altera_timer.c b/drivers/timer/altera_timer.c
index a8d6ba5..7e9abee 100644
--- a/drivers/timer/altera_timer.c
+++ b/drivers/timer/altera_timer.c
@@ -28,13 +28,13 @@
 	u32	snaph;		/* Snapshot high */
 };
 
-struct altera_timer_platdata {
+struct altera_timer_plat {
 	struct altera_timer_regs *regs;
 };
 
 static u64 altera_timer_get_count(struct udevice *dev)
 {
-	struct altera_timer_platdata *plat = dev->plat;
+	struct altera_timer_plat *plat = dev->plat;
 	struct altera_timer_regs *const regs = plat->regs;
 	u32 val;
 
@@ -49,7 +49,7 @@
 
 static int altera_timer_probe(struct udevice *dev)
 {
-	struct altera_timer_platdata *plat = dev->plat;
+	struct altera_timer_plat *plat = dev->plat;
 	struct altera_timer_regs *const regs = plat->regs;
 
 	writel(0, &regs->status);
@@ -65,7 +65,7 @@
 
 static int altera_timer_of_to_plat(struct udevice *dev)
 {
-	struct altera_timer_platdata *plat = dev_get_plat(dev);
+	struct altera_timer_plat *plat = dev_get_plat(dev);
 
 	plat->regs = map_physmem(dev_read_addr(dev),
 				 sizeof(struct altera_timer_regs),
@@ -88,7 +88,7 @@
 	.id	= UCLASS_TIMER,
 	.of_match = altera_timer_ids,
 	.of_to_plat = altera_timer_of_to_plat,
-	.plat_auto	= sizeof(struct altera_timer_platdata),
+	.plat_auto	= sizeof(struct altera_timer_plat),
 	.probe = altera_timer_probe,
 	.ops	= &altera_timer_ops,
 };
diff --git a/drivers/timer/atcpit100_timer.c b/drivers/timer/atcpit100_timer.c
index 16d03c4..fbc7fac 100644
--- a/drivers/timer/atcpit100_timer.c
+++ b/drivers/timer/atcpit100_timer.c
@@ -64,13 +64,13 @@
 	u32	int_mask;	/* 0x38 */
 };
 
-struct atcpit_timer_platdata {
+struct atcpit_timer_plat {
 	u32 *regs;
 };
 
 static u64 atcpit_timer_get_count(struct udevice *dev)
 {
-	struct atcpit_timer_platdata *plat = dev_get_plat(dev);
+	struct atcpit_timer_plat *plat = dev_get_plat(dev);
 	u32 val;
 	val = ~(REG32_TMR(CH_CNT(1))+0xffffffff);
 	return timer_conv_64(val);
@@ -78,7 +78,7 @@
 
 static int atcpit_timer_probe(struct udevice *dev)
 {
-	struct atcpit_timer_platdata *plat = dev_get_plat(dev);
+	struct atcpit_timer_plat *plat = dev_get_plat(dev);
 	REG32_TMR(CH_REL(1)) = 0xffffffff;
 	REG32_TMR(CH_CTL(1)) = APB_CLK|TMR_32;
 	REG32_TMR(CH_EN) |= CH_TMR_EN(1 , 0);
@@ -87,7 +87,7 @@
 
 static int atcpit_timer_of_to_plat(struct udevice *dev)
 {
-	struct atcpit_timer_platdata *plat = dev_get_plat(dev);
+	struct atcpit_timer_plat *plat = dev_get_plat(dev);
 	plat->regs = map_physmem(dev_read_addr(dev), 0x100 , MAP_NOCACHE);
 	return 0;
 }
@@ -106,7 +106,7 @@
 	.id	= UCLASS_TIMER,
 	.of_match = atcpit_timer_ids,
 	.of_to_plat = atcpit_timer_of_to_plat,
-	.plat_auto	= sizeof(struct atcpit_timer_platdata),
+	.plat_auto	= sizeof(struct atcpit_timer_plat),
 	.probe = atcpit_timer_probe,
 	.ops	= &atcpit_timer_ops,
 };
diff --git a/drivers/timer/atmel_pit_timer.c b/drivers/timer/atmel_pit_timer.c
index 7b445df..3178e58 100644
--- a/drivers/timer/atmel_pit_timer.c
+++ b/drivers/timer/atmel_pit_timer.c
@@ -21,13 +21,13 @@
 	u32	value_image;
 };
 
-struct atmel_pit_platdata {
+struct atmel_pit_plat {
 	struct atmel_pit_regs *regs;
 };
 
 static u64 atmel_pit_get_count(struct udevice *dev)
 {
-	struct atmel_pit_platdata *plat = dev_get_plat(dev);
+	struct atmel_pit_plat *plat = dev_get_plat(dev);
 	struct atmel_pit_regs *const regs = plat->regs;
 	u32 val = readl(&regs->value_image);
 
@@ -36,7 +36,7 @@
 
 static int atmel_pit_probe(struct udevice *dev)
 {
-	struct atmel_pit_platdata *plat = dev_get_plat(dev);
+	struct atmel_pit_plat *plat = dev_get_plat(dev);
 	struct atmel_pit_regs *const regs = plat->regs;
 	struct timer_dev_priv *uc_priv = dev_get_uclass_priv(dev);
 	struct clk clk;
@@ -60,7 +60,7 @@
 
 static int atmel_pit_of_to_plat(struct udevice *dev)
 {
-	struct atmel_pit_platdata *plat = dev_get_plat(dev);
+	struct atmel_pit_plat *plat = dev_get_plat(dev);
 
 	plat->regs = dev_read_addr_ptr(dev);
 
@@ -81,7 +81,7 @@
 	.id	= UCLASS_TIMER,
 	.of_match = atmel_pit_ids,
 	.of_to_plat = atmel_pit_of_to_plat,
-	.plat_auto	= sizeof(struct atmel_pit_platdata),
+	.plat_auto	= sizeof(struct atmel_pit_plat),
 	.probe	= atmel_pit_probe,
 	.ops	= &atmel_pit_ops,
 };
diff --git a/drivers/timer/timer-uclass.c b/drivers/timer/timer-uclass.c
index a15198c..ab53555 100644
--- a/drivers/timer/timer-uclass.c
+++ b/drivers/timer/timer-uclass.c
@@ -90,7 +90,7 @@
 int timer_timebase_fallback(struct udevice *dev)
 {
 	struct udevice *cpu;
-	struct cpu_platdata *cpu_plat;
+	struct cpu_plat *cpu_plat;
 	struct timer_dev_priv *uc_priv = dev_get_uclass_priv(dev);
 
 	/* Did we get our clock rate from the device tree? */
diff --git a/drivers/ufs/ufs.c b/drivers/ufs/ufs.c
index fe43f1b..13e730b 100644
--- a/drivers/ufs/ufs.c
+++ b/drivers/ufs/ufs.c
@@ -1865,7 +1865,7 @@
 int ufshcd_probe(struct udevice *ufs_dev, struct ufs_hba_ops *hba_ops)
 {
 	struct ufs_hba *hba = dev_get_uclass_priv(ufs_dev);
-	struct scsi_platdata *scsi_plat;
+	struct scsi_plat *scsi_plat;
 	struct udevice *scsi_dev;
 	int err;
 
diff --git a/drivers/usb/emul/sandbox_hub.c b/drivers/usb/emul/sandbox_hub.c
index 396923a..041ec37 100644
--- a/drivers/usb/emul/sandbox_hub.c
+++ b/drivers/usb/emul/sandbox_hub.c
@@ -13,8 +13,8 @@
 /* We only support up to 8 */
 #define SANDBOX_NUM_PORTS	4
 
-struct sandbox_hub_platdata {
-	struct usb_dev_platdata plat;
+struct sandbox_hub_plat {
+	struct usb_dev_plat plat;
 	int port;	/* Port number (numbered from 0) */
 };
 
@@ -129,7 +129,7 @@
 	for (device_find_first_child(hub, &dev);
 	     dev;
 	     device_find_next_child(&dev)) {
-		struct sandbox_hub_platdata *plat;
+		struct sandbox_hub_plat *plat;
 
 		plat = dev_get_parent_plat(dev);
 		if (plat->port == port) {
@@ -304,8 +304,8 @@
 
 static int sandbox_child_post_bind(struct udevice *dev)
 {
-	struct sandbox_hub_platdata *plat = dev_get_parent_plat(dev);
-	struct usb_emul_platdata *emul = dev_get_uclass_plat(dev);
+	struct sandbox_hub_plat *plat = dev_get_parent_plat(dev);
+	struct usb_emul_plat *emul = dev_get_uclass_plat(dev);
 
 	plat->port = dev_read_u32_default(dev, "reg", -1);
 	emul->port1 = plat->port + 1;
@@ -329,6 +329,6 @@
 	.bind	= sandbox_hub_bind,
 	.ops	= &sandbox_usb_hub_ops,
 	.priv_auto	= sizeof(struct sandbox_hub_priv),
-	.per_child_plat_auto	= sizeof(struct sandbox_hub_platdata),
+	.per_child_plat_auto	= sizeof(struct sandbox_hub_plat),
 	.child_post_bind = sandbox_child_post_bind,
 };
diff --git a/drivers/usb/emul/usb-emul-uclass.c b/drivers/usb/emul/usb-emul-uclass.c
index 1b7e1ea..f5d98b9 100644
--- a/drivers/usb/emul/usb-emul-uclass.c
+++ b/drivers/usb/emul/usb-emul-uclass.c
@@ -75,7 +75,7 @@
 	return ptr;
 }
 
-static int usb_emul_get_descriptor(struct usb_dev_platdata *plat, int value,
+static int usb_emul_get_descriptor(struct usb_dev_plat *plat, int value,
 				   void *buffer, int length)
 {
 	struct usb_generic_descriptor **ptr;
@@ -115,7 +115,7 @@
 	if (ret)
 		return ret;
 	uclass_foreach_dev(dev, uc) {
-		struct usb_dev_platdata *udev = dev_get_parent_plat(dev);
+		struct usb_dev_plat *udev = dev_get_parent_plat(dev);
 
 		/*
 		 * devnum is initialzied to zero at the beginning of the
@@ -126,7 +126,7 @@
 		 * emulator device.
 		 */
 		if (!devnum) {
-			struct usb_emul_platdata *plat;
+			struct usb_emul_plat *plat;
 
 			/*
 			 * If the parent is sandbox USB controller, we are
@@ -169,7 +169,7 @@
 
 int usb_emul_find_for_dev(struct udevice *dev, struct udevice **emulp)
 {
-	struct usb_dev_platdata *udev = dev_get_parent_plat(dev);
+	struct usb_dev_plat *udev = dev_get_parent_plat(dev);
 
 	return usb_emul_find_devnum(udev->devnum, 0, emulp);
 }
@@ -179,7 +179,7 @@
 		     struct devrequest *setup)
 {
 	struct dm_usb_ops *ops = usb_get_emul_ops(emul);
-	struct usb_dev_platdata *plat;
+	struct usb_dev_plat *plat;
 	int ret;
 
 	/* We permit getting the descriptor before we are probed */
@@ -262,7 +262,7 @@
 int usb_emul_setup_device(struct udevice *dev, struct usb_string *strings,
 			  void **desc_list)
 {
-	struct usb_dev_platdata *plat = dev_get_parent_plat(dev);
+	struct usb_dev_plat *plat = dev_get_parent_plat(dev);
 	struct usb_generic_descriptor **ptr;
 	struct usb_config_descriptor *cdesc;
 	int upto;
@@ -298,7 +298,7 @@
 	.id		= UCLASS_USB_EMUL,
 	.name		= "usb_emul",
 	.post_bind	= dm_scan_fdt_dev,
-	.per_device_plat_auto	= sizeof(struct usb_emul_platdata),
+	.per_device_plat_auto	= sizeof(struct usb_emul_plat),
 	.per_child_auto	= sizeof(struct usb_device),
-	.per_child_plat_auto	= sizeof(struct usb_dev_platdata),
+	.per_child_plat_auto	= sizeof(struct usb_dev_plat),
 };
diff --git a/drivers/usb/gadget/max3420_udc.c b/drivers/usb/gadget/max3420_udc.c
index 36f3eb5..53e74d4 100644
--- a/drivers/usb/gadget/max3420_udc.c
+++ b/drivers/usb/gadget/max3420_udc.c
@@ -819,7 +819,7 @@
 static int max3420_udc_probe(struct udevice *dev)
 {
 	struct max3420_udc *udc = dev_get_priv(dev);
-	struct dm_spi_slave_platdata *slave_pdata;
+	struct dm_spi_slave_plat *slave_pdata;
 	struct udevice *bus = dev->parent;
 	int busnum = bus->seq;
 	unsigned int cs;
diff --git a/drivers/usb/host/dwc3-sti-glue.c b/drivers/usb/host/dwc3-sti-glue.c
index 660a145..deb820a 100644
--- a/drivers/usb/host/dwc3-sti-glue.c
+++ b/drivers/usb/host/dwc3-sti-glue.c
@@ -24,7 +24,7 @@
 DECLARE_GLOBAL_DATA_PTR;
 
 /*
- * struct sti_dwc3_glue_platdata - dwc3 STi glue driver private structure
+ * struct sti_dwc3_glue_plat - dwc3 STi glue driver private structure
  * @syscfg_base:	addr for the glue syscfg
  * @glue_base:		addr for the glue registers
  * @syscfg_offset:	usb syscfg control offset
@@ -32,7 +32,7 @@
  * @softreset_ctl:	reset controller for softreset signal
  * @mode:		drd static host/device config
  */
-struct sti_dwc3_glue_platdata {
+struct sti_dwc3_glue_plat {
 	phys_addr_t syscfg_base;
 	phys_addr_t glue_base;
 	phys_addr_t syscfg_offset;
@@ -41,7 +41,7 @@
 	enum usb_dr_mode mode;
 };
 
-static int sti_dwc3_glue_drd_init(struct sti_dwc3_glue_platdata *plat)
+static int sti_dwc3_glue_drd_init(struct sti_dwc3_glue_plat *plat)
 {
 	unsigned long val;
 
@@ -77,7 +77,7 @@
 	return 0;
 }
 
-static void sti_dwc3_glue_init(struct sti_dwc3_glue_platdata *plat)
+static void sti_dwc3_glue_init(struct sti_dwc3_glue_plat *plat)
 {
 	unsigned long reg;
 
@@ -102,7 +102,7 @@
 
 static int sti_dwc3_glue_of_to_plat(struct udevice *dev)
 {
-	struct sti_dwc3_glue_platdata *plat = dev_get_plat(dev);
+	struct sti_dwc3_glue_plat *plat = dev_get_plat(dev);
 	struct udevice *syscon;
 	struct regmap *regmap;
 	int ret;
@@ -150,7 +150,7 @@
 
 static int sti_dwc3_glue_bind(struct udevice *dev)
 {
-	struct sti_dwc3_glue_platdata *plat = dev_get_plat(dev);
+	struct sti_dwc3_glue_plat *plat = dev_get_plat(dev);
 	ofnode node, dwc3_node;
 
 	/* Find snps,dwc3 node from subnode */
@@ -175,7 +175,7 @@
 
 static int sti_dwc3_glue_probe(struct udevice *dev)
 {
-	struct sti_dwc3_glue_platdata *plat = dev_get_plat(dev);
+	struct sti_dwc3_glue_plat *plat = dev_get_plat(dev);
 	int ret;
 
 	/* deassert both powerdown and softreset */
@@ -216,7 +216,7 @@
 
 static int sti_dwc3_glue_remove(struct udevice *dev)
 {
-	struct sti_dwc3_glue_platdata *plat = dev_get_plat(dev);
+	struct sti_dwc3_glue_plat *plat = dev_get_plat(dev);
 	int ret;
 
 	/* assert both powerdown and softreset */
@@ -246,6 +246,6 @@
 	.probe = sti_dwc3_glue_probe,
 	.remove = sti_dwc3_glue_remove,
 	.bind = sti_dwc3_glue_bind,
-	.plat_auto	= sizeof(struct sti_dwc3_glue_platdata),
+	.plat_auto	= sizeof(struct sti_dwc3_glue_plat),
 	.flags = DM_FLAG_ALLOC_PRIV_DMA,
 };
diff --git a/drivers/usb/host/ehci-atmel.c b/drivers/usb/host/ehci-atmel.c
index 22a35a5..fba3595 100644
--- a/drivers/usb/host/ehci-atmel.c
+++ b/drivers/usb/host/ehci-atmel.c
@@ -124,7 +124,7 @@
 	.probe		= ehci_atmel_probe,
 	.remove		= ehci_deregister,
 	.ops		= &ehci_usb_ops,
-	.plat_auto	= sizeof(struct usb_platdata),
+	.plat_auto	= sizeof(struct usb_plat),
 	.priv_auto	= sizeof(struct ehci_atmel_priv),
 	.flags		= DM_FLAG_ALLOC_PRIV_DMA,
 };
diff --git a/drivers/usb/host/ehci-exynos.c b/drivers/usb/host/ehci-exynos.c
index 690a96c..fda04c4 100644
--- a/drivers/usb/host/ehci-exynos.c
+++ b/drivers/usb/host/ehci-exynos.c
@@ -26,8 +26,8 @@
 /* Declare global data pointer */
 DECLARE_GLOBAL_DATA_PTR;
 
-struct exynos_ehci_platdata {
-	struct usb_platdata usb_plat;
+struct exynos_ehci_plat {
+	struct usb_plat usb_plat;
 	fdt_addr_t hcd_base;
 	fdt_addr_t phy_base;
 	struct gpio_desc vbus_gpio;
@@ -45,7 +45,7 @@
 
 static int ehci_usb_of_to_plat(struct udevice *dev)
 {
-	struct exynos_ehci_platdata *plat = dev_get_plat(dev);
+	struct exynos_ehci_plat *plat = dev_get_plat(dev);
 	const void *blob = gd->fdt_blob;
 	unsigned int node;
 	int depth;
@@ -214,7 +214,7 @@
 
 static int ehci_usb_probe(struct udevice *dev)
 {
-	struct exynos_ehci_platdata *plat = dev_get_plat(dev);
+	struct exynos_ehci_plat *plat = dev_get_plat(dev);
 	struct exynos_ehci *ctx = dev_get_priv(dev);
 	struct ehci_hcor *hcor;
 
@@ -259,6 +259,6 @@
 	.remove = ehci_usb_remove,
 	.ops	= &ehci_usb_ops,
 	.priv_auto	= sizeof(struct exynos_ehci),
-	.plat_auto	= sizeof(struct exynos_ehci_platdata),
+	.plat_auto	= sizeof(struct exynos_ehci_plat),
 	.flags	= DM_FLAG_ALLOC_PRIV_DMA,
 };
diff --git a/drivers/usb/host/ehci-fsl.c b/drivers/usb/host/ehci-fsl.c
index dfeca89..8e79bdd 100644
--- a/drivers/usb/host/ehci-fsl.c
+++ b/drivers/usb/host/ehci-fsl.c
@@ -145,7 +145,7 @@
 	.probe = ehci_fsl_probe,
 	.remove = ehci_deregister,
 	.ops	= &ehci_usb_ops,
-	.plat_auto	= sizeof(struct usb_platdata),
+	.plat_auto	= sizeof(struct usb_plat),
 	.priv_auto	= sizeof(struct ehci_fsl_priv),
 	.flags	= DM_FLAG_ALLOC_PRIV_DMA,
 };
diff --git a/drivers/usb/host/ehci-marvell.c b/drivers/usb/host/ehci-marvell.c
index f9e24b9..3ecbfd0 100644
--- a/drivers/usb/host/ehci-marvell.c
+++ b/drivers/usb/host/ehci-marvell.c
@@ -152,7 +152,7 @@
 	.probe = ehci_mvebu_probe,
 	.remove = ehci_deregister,
 	.ops	= &ehci_usb_ops,
-	.plat_auto	= sizeof(struct usb_platdata),
+	.plat_auto	= sizeof(struct usb_plat),
 	.priv_auto	= sizeof(struct ehci_mvebu_priv),
 	.flags	= DM_FLAG_ALLOC_PRIV_DMA,
 };
diff --git a/drivers/usb/host/ehci-msm.c b/drivers/usb/host/ehci-msm.c
index a3405d0..d160cf0 100644
--- a/drivers/usb/host/ehci-msm.c
+++ b/drivers/usb/host/ehci-msm.c
@@ -47,7 +47,7 @@
 {
 	struct msm_ehci_priv *p = dev_get_priv(dev);
 	struct usb_ehci *ehci = p->ehci;
-	struct usb_platdata *plat = dev_get_plat(dev);
+	struct usb_plat *plat = dev_get_plat(dev);
 	struct ehci_hccr *hccr;
 	struct ehci_hcor *hcor;
 	int ret;
@@ -145,6 +145,6 @@
 	.remove = ehci_usb_remove,
 	.ops	= &ehci_usb_ops,
 	.priv_auto	= sizeof(struct msm_ehci_priv),
-	.plat_auto	= sizeof(struct usb_platdata),
+	.plat_auto	= sizeof(struct usb_plat),
 	.flags	= DM_FLAG_ALLOC_PRIV_DMA,
 };
diff --git a/drivers/usb/host/ehci-mx5.c b/drivers/usb/host/ehci-mx5.c
index 970bbe9..0486263 100644
--- a/drivers/usb/host/ehci-mx5.c
+++ b/drivers/usb/host/ehci-mx5.c
@@ -287,7 +287,7 @@
 
 static int ehci_usb_of_to_plat(struct udevice *dev)
 {
-	struct usb_platdata *plat = dev_get_plat(dev);
+	struct usb_plat *plat = dev_get_plat(dev);
 	const char *mode;
 
 	mode = fdt_getprop(gd->fdt_blob, dev_of_offset(dev), "dr_mode", NULL);
@@ -305,7 +305,7 @@
 
 static int ehci_usb_probe(struct udevice *dev)
 {
-	struct usb_platdata *plat = dev_get_plat(dev);
+	struct usb_plat *plat = dev_get_plat(dev);
 	struct usb_ehci *ehci = dev_read_addr_ptr(dev);
 	struct ehci_mx5_priv_data *priv = dev_get_priv(dev);
 	enum usb_init_type type = plat->init_type;
@@ -367,7 +367,7 @@
 	.probe	= ehci_usb_probe,
 	.remove = ehci_deregister,
 	.ops	= &ehci_usb_ops,
-	.plat_auto	= sizeof(struct usb_platdata),
+	.plat_auto	= sizeof(struct usb_plat),
 	.priv_auto	= sizeof(struct ehci_mx5_priv_data),
 	.flags	= DM_FLAG_ALLOC_PRIV_DMA,
 };
diff --git a/drivers/usb/host/ehci-mx6.c b/drivers/usb/host/ehci-mx6.c
index 628081a..65ebd7c 100644
--- a/drivers/usb/host/ehci-mx6.c
+++ b/drivers/usb/host/ehci-mx6.c
@@ -472,7 +472,7 @@
 
 static int ehci_usb_phy_mode(struct udevice *dev)
 {
-	struct usb_platdata *plat = dev_get_plat(dev);
+	struct usb_plat *plat = dev_get_plat(dev);
 	void *__iomem addr = dev_read_addr_ptr(dev);
 	void *__iomem phy_ctrl, *__iomem phy_status;
 	const void *blob = gd->fdt_blob;
@@ -520,7 +520,7 @@
 
 static int ehci_usb_of_to_plat(struct udevice *dev)
 {
-	struct usb_platdata *plat = dev_get_plat(dev);
+	struct usb_plat *plat = dev_get_plat(dev);
 	enum usb_dr_mode dr_mode;
 
 	dr_mode = usb_get_dr_mode(dev->node);
@@ -579,7 +579,7 @@
 
 static int ehci_usb_probe(struct udevice *dev)
 {
-	struct usb_platdata *plat = dev_get_plat(dev);
+	struct usb_plat *plat = dev_get_plat(dev);
 	struct usb_ehci *ehci = dev_read_addr_ptr(dev);
 	struct ehci_mx6_priv_data *priv = dev_get_priv(dev);
 	enum usb_init_type type = plat->init_type;
@@ -650,7 +650,7 @@
 	.probe	= ehci_usb_probe,
 	.remove = ehci_deregister,
 	.ops	= &ehci_usb_ops,
-	.plat_auto	= sizeof(struct usb_platdata),
+	.plat_auto	= sizeof(struct usb_plat),
 	.priv_auto	= sizeof(struct ehci_mx6_priv_data),
 	.flags	= DM_FLAG_ALLOC_PRIV_DMA,
 };
diff --git a/drivers/usb/host/ehci-omap.c b/drivers/usb/host/ehci-omap.c
index 58a9a1d..cb50bf3 100644
--- a/drivers/usb/host/ehci-omap.c
+++ b/drivers/usb/host/ehci-omap.c
@@ -368,7 +368,7 @@
 
 static int ehci_usb_of_to_plat(struct udevice *dev)
 {
-	struct usb_platdata *plat = dev_get_plat(dev);
+	struct usb_plat *plat = dev_get_plat(dev);
 
 	plat->init_type = USB_INIT_HOST;
 
@@ -377,7 +377,7 @@
 
 static int omap_ehci_probe(struct udevice *dev)
 {
-	struct usb_platdata *plat = dev_get_plat(dev);
+	struct usb_plat *plat = dev_get_plat(dev);
 	struct ehci_omap_priv_data *priv = dev_get_priv(dev);
 	struct ehci_hccr *hccr;
 	struct ehci_hcor *hcor;
@@ -403,7 +403,7 @@
 	.of_match = omap_ehci_dt_ids,
 	.probe = omap_ehci_probe,
 	.of_to_plat = ehci_usb_of_to_plat,
-	.plat_auto	= sizeof(struct usb_platdata),
+	.plat_auto	= sizeof(struct usb_plat),
 	.priv_auto	= sizeof(struct ehci_omap_priv_data),
 	.remove = ehci_deregister,
 	.ops	= &ehci_usb_ops,
diff --git a/drivers/usb/host/ehci-pci.c b/drivers/usb/host/ehci-pci.c
index 61f5a6c..4f711de 100644
--- a/drivers/usb/host/ehci-pci.c
+++ b/drivers/usb/host/ehci-pci.c
@@ -163,7 +163,7 @@
 	.remove = ehci_pci_remove,
 	.of_match = ehci_pci_ids,
 	.ops	= &ehci_usb_ops,
-	.plat_auto	= sizeof(struct usb_platdata),
+	.plat_auto	= sizeof(struct usb_plat),
 	.priv_auto	= sizeof(struct ehci_pci_priv),
 	.flags	= DM_FLAG_ALLOC_PRIV_DMA,
 };
diff --git a/drivers/usb/host/ehci-tegra.c b/drivers/usb/host/ehci-tegra.c
index c16eec3..b02ee89 100644
--- a/drivers/usb/host/ehci-tegra.c
+++ b/drivers/usb/host/ehci-tegra.c
@@ -828,7 +828,7 @@
 
 static int ehci_usb_probe(struct udevice *dev)
 {
-	struct usb_platdata *plat = dev_get_plat(dev);
+	struct usb_plat *plat = dev_get_plat(dev);
 	struct fdt_usb *priv = dev_get_priv(dev);
 	struct ehci_hccr *hccr;
 	struct ehci_hcor *hcor;
@@ -865,7 +865,7 @@
 	.probe = ehci_usb_probe,
 	.remove = ehci_deregister,
 	.ops	= &ehci_usb_ops,
-	.plat_auto	= sizeof(struct usb_platdata),
+	.plat_auto	= sizeof(struct usb_plat),
 	.priv_auto	= sizeof(struct fdt_usb),
 	.flags	= DM_FLAG_ALLOC_PRIV_DMA,
 };
diff --git a/drivers/usb/host/ehci-vf.c b/drivers/usb/host/ehci-vf.c
index a517c61..e0e4f84 100644
--- a/drivers/usb/host/ehci-vf.c
+++ b/drivers/usb/host/ehci-vf.c
@@ -312,7 +312,7 @@
 
 static int ehci_usb_probe(struct udevice *dev)
 {
-	struct usb_platdata *plat = dev_get_plat(dev);
+	struct usb_plat *plat = dev_get_plat(dev);
 	struct ehci_vf_priv_data *priv = dev_get_priv(dev);
 	struct usb_ehci *ehci = priv->ehci;
 	struct ehci_hccr *hccr;
@@ -355,7 +355,7 @@
 	.remove = ehci_deregister,
 	.ops = &ehci_usb_ops,
 	.of_to_plat = vf_usb_of_to_plat,
-	.plat_auto	= sizeof(struct usb_platdata),
+	.plat_auto	= sizeof(struct usb_plat),
 	.priv_auto	= sizeof(struct ehci_vf_priv_data),
 	.flags = DM_FLAG_ALLOC_PRIV_DMA,
 };
diff --git a/drivers/usb/host/ehci-zynq.c b/drivers/usb/host/ehci-zynq.c
index 6756465..f7e458c 100644
--- a/drivers/usb/host/ehci-zynq.c
+++ b/drivers/usb/host/ehci-zynq.c
@@ -34,7 +34,7 @@
 
 static int ehci_zynq_probe(struct udevice *dev)
 {
-	struct usb_platdata *plat = dev_get_plat(dev);
+	struct usb_plat *plat = dev_get_plat(dev);
 	struct zynq_ehci_priv *priv = dev_get_priv(dev);
 	struct ehci_hccr *hccr;
 	struct ehci_hcor *hcor;
@@ -85,7 +85,7 @@
 	.probe = ehci_zynq_probe,
 	.remove = ehci_deregister,
 	.ops	= &ehci_usb_ops,
-	.plat_auto	= sizeof(struct usb_platdata),
+	.plat_auto	= sizeof(struct usb_plat),
 	.priv_auto	= sizeof(struct zynq_ehci_priv),
 	.flags	= DM_FLAG_ALLOC_PRIV_DMA,
 };
diff --git a/drivers/usb/host/ohci-pci.c b/drivers/usb/host/ohci-pci.c
index c53b6f5..6ddc9da 100644
--- a/drivers/usb/host/ohci-pci.c
+++ b/drivers/usb/host/ohci-pci.c
@@ -39,7 +39,7 @@
 	.remove = ohci_pci_remove,
 	.of_match = ohci_pci_ids,
 	.ops	= &ohci_usb_ops,
-	.plat_auto	= sizeof(struct usb_platdata),
+	.plat_auto	= sizeof(struct usb_plat),
 	.priv_auto	= sizeof(ohci_t),
 	.flags	= DM_FLAG_ALLOC_PRIV_DMA,
 };
diff --git a/drivers/usb/host/usb-uclass.c b/drivers/usb/host/usb-uclass.c
index 94ce9a6..decee61 100644
--- a/drivers/usb/host/usb-uclass.c
+++ b/drivers/usb/host/usb-uclass.c
@@ -389,7 +389,7 @@
 
 int usb_setup_ehci_gadget(struct ehci_ctrl **ctlrp)
 {
-	struct usb_platdata *plat;
+	struct usb_plat *plat;
 	struct udevice *dev;
 	int ret;
 
@@ -566,7 +566,7 @@
 		const struct usb_device_id *id;
 		struct udevice *dev;
 		const struct driver *drv;
-		struct usb_dev_platdata *plat;
+		struct usb_dev_plat *plat;
 
 		for (id = entry->match; id->match_flags; id++) {
 			if (!usb_match_one_id(desc, iface, id))
@@ -622,7 +622,7 @@
 	for (device_find_first_child(parent, &dev);
 	     dev;
 	     device_find_next_child(&dev)) {
-		struct usb_dev_platdata *plat = dev_get_parent_plat(dev);
+		struct usb_dev_plat *plat = dev_get_parent_plat(dev);
 
 		/* If this device is already in use, skip it */
 		if (device_active(dev))
@@ -643,7 +643,7 @@
 {
 	struct udevice *dev;
 	bool created = false;
-	struct usb_dev_platdata *plat;
+	struct usb_dev_plat *plat;
 	struct usb_bus_priv *priv;
 	struct usb_device *parent_udev;
 	int ret;
@@ -770,7 +770,7 @@
 
 static int usb_child_post_bind(struct udevice *dev)
 {
-	struct usb_dev_platdata *plat = dev_get_parent_plat(dev);
+	struct usb_dev_plat *plat = dev_get_parent_plat(dev);
 	int val;
 
 	if (!dev_of_valid(dev))
@@ -809,7 +809,7 @@
 int usb_child_pre_probe(struct udevice *dev)
 {
 	struct usb_device *udev = dev_get_parent_priv(dev);
-	struct usb_dev_platdata *plat = dev_get_parent_plat(dev);
+	struct usb_dev_plat *plat = dev_get_parent_plat(dev);
 	int ret;
 
 	if (plat->udev) {
@@ -854,7 +854,7 @@
 	.per_device_auto	= sizeof(struct usb_bus_priv),
 	.child_post_bind = usb_child_post_bind,
 	.child_pre_probe = usb_child_pre_probe,
-	.per_child_plat_auto	= sizeof(struct usb_dev_platdata),
+	.per_child_plat_auto	= sizeof(struct usb_dev_plat),
 };
 
 UCLASS_DRIVER(usb_dev_generic) = {
diff --git a/drivers/usb/host/xhci-brcm.c b/drivers/usb/host/xhci-brcm.c
index 31e4265..27c4bbf 100644
--- a/drivers/usb/host/xhci-brcm.c
+++ b/drivers/usb/host/xhci-brcm.c
@@ -22,7 +22,7 @@
 #define USBAXI_SA_UA_MASK	(USBAXI_UA_MASK | USBAXI_SA_MASK)
 #define USBAXI_SA_UA_VAL	(USBAXI_UA_VAL | USBAXI_SA_VAL)
 
-struct brcm_xhci_platdata {
+struct brcm_xhci_plat {
 	unsigned int arcache;
 	unsigned int awcache;
 	void __iomem *hc_base;
@@ -30,7 +30,7 @@
 
 static int xhci_brcm_probe(struct udevice *dev)
 {
-	struct brcm_xhci_platdata *plat = dev_get_plat(dev);
+	struct brcm_xhci_plat *plat = dev_get_plat(dev);
 	struct xhci_hcor *hcor;
 	struct xhci_hccr *hcd;
 	int len, ret = 0;
@@ -71,7 +71,7 @@
 
 static int xhci_brcm_deregister(struct udevice *dev)
 {
-	struct brcm_xhci_platdata *plat = dev_get_plat(dev);
+	struct brcm_xhci_plat *plat = dev_get_plat(dev);
 
 	/* Restore the default values for AXI read and write attributes */
 	writel(plat->awcache, plat->hc_base + DRD2U3H_XHC_REGS_AXIWRA);
@@ -92,7 +92,7 @@
 	.remove				= xhci_brcm_deregister,
 	.ops				= &xhci_usb_ops,
 	.of_match			= xhci_brcm_ids,
-	.plat_auto	= sizeof(struct brcm_xhci_platdata),
+	.plat_auto	= sizeof(struct brcm_xhci_plat),
 	.priv_auto		= sizeof(struct xhci_ctrl),
 	.flags				= DM_FLAG_ALLOC_PRIV_DMA,
 };
diff --git a/drivers/usb/host/xhci-dwc3.c b/drivers/usb/host/xhci-dwc3.c
index f6534a2..59408e4 100644
--- a/drivers/usb/host/xhci-dwc3.c
+++ b/drivers/usb/host/xhci-dwc3.c
@@ -20,7 +20,7 @@
 #include <linux/usb/dwc3.h>
 #include <linux/usb/otg.h>
 
-struct xhci_dwc3_platdata {
+struct xhci_dwc3_plat {
 	struct phy_bulk phys;
 };
 
@@ -117,7 +117,7 @@
 	struct xhci_hccr *hccr;
 	struct dwc3 *dwc3_reg;
 	enum usb_dr_mode dr_mode;
-	struct xhci_dwc3_platdata *plat = dev_get_plat(dev);
+	struct xhci_dwc3_plat *plat = dev_get_plat(dev);
 	const char *phy;
 	u32 reg;
 	int ret;
@@ -167,7 +167,7 @@
 
 static int xhci_dwc3_remove(struct udevice *dev)
 {
-	struct xhci_dwc3_platdata *plat = dev_get_plat(dev);
+	struct xhci_dwc3_plat *plat = dev_get_plat(dev);
 
 	dwc3_shutdown_phy(dev, &plat->phys);
 
@@ -187,7 +187,7 @@
 	.remove = xhci_dwc3_remove,
 	.ops = &xhci_usb_ops,
 	.priv_auto	= sizeof(struct xhci_ctrl),
-	.plat_auto	= sizeof(struct xhci_dwc3_platdata),
+	.plat_auto	= sizeof(struct xhci_dwc3_plat),
 	.flags = DM_FLAG_ALLOC_PRIV_DMA,
 };
 #endif
diff --git a/drivers/usb/host/xhci-exynos5.c b/drivers/usb/host/xhci-exynos5.c
index fe804a0..9893a8c 100644
--- a/drivers/usb/host/xhci-exynos5.c
+++ b/drivers/usb/host/xhci-exynos5.c
@@ -34,7 +34,7 @@
 /* Declare global data pointer */
 DECLARE_GLOBAL_DATA_PTR;
 
-struct exynos_xhci_platdata {
+struct exynos_xhci_plat {
 	fdt_addr_t hcd_base;
 	fdt_addr_t phy_base;
 	struct gpio_desc vbus_gpio;
@@ -45,7 +45,7 @@
  * for the usb controller.
  */
 struct exynos_xhci {
-	struct usb_platdata usb_plat;
+	struct usb_plat usb_plat;
 	struct xhci_ctrl ctrl;
 	struct exynos_usb3_phy *usb3_phy;
 	struct xhci_hccr *hcd;
@@ -54,7 +54,7 @@
 
 static int xhci_usb_of_to_plat(struct udevice *dev)
 {
-	struct exynos_xhci_platdata *plat = dev_get_plat(dev);
+	struct exynos_xhci_plat *plat = dev_get_plat(dev);
 	const void *blob = gd->fdt_blob;
 	unsigned int node;
 	int depth;
@@ -205,7 +205,7 @@
 
 static int xhci_usb_probe(struct udevice *dev)
 {
-	struct exynos_xhci_platdata *plat = dev_get_plat(dev);
+	struct exynos_xhci_plat *plat = dev_get_plat(dev);
 	struct exynos_xhci *ctx = dev_get_priv(dev);
 	struct xhci_hcor *hcor;
 	int ret;
@@ -255,7 +255,7 @@
 	.probe = xhci_usb_probe,
 	.remove = xhci_usb_remove,
 	.ops	= &xhci_usb_ops,
-	.plat_auto	= sizeof(struct exynos_xhci_platdata),
+	.plat_auto	= sizeof(struct exynos_xhci_plat),
 	.priv_auto	= sizeof(struct exynos_xhci),
 	.flags	= DM_FLAG_ALLOC_PRIV_DMA,
 };
diff --git a/drivers/usb/host/xhci-fsl.c b/drivers/usb/host/xhci-fsl.c
index e54db0f..f062f12 100644
--- a/drivers/usb/host/xhci-fsl.c
+++ b/drivers/usb/host/xhci-fsl.c
@@ -169,7 +169,7 @@
 	.probe = xhci_fsl_probe,
 	.remove = xhci_fsl_remove,
 	.ops	= &xhci_usb_ops,
-	.plat_auto	= sizeof(struct usb_platdata),
+	.plat_auto	= sizeof(struct usb_plat),
 	.priv_auto	= sizeof(struct xhci_fsl_priv),
 	.flags	= DM_FLAG_ALLOC_PRIV_DMA,
 };
diff --git a/drivers/usb/host/xhci-mvebu.c b/drivers/usb/host/xhci-mvebu.c
index 017f99b..46b89de 100644
--- a/drivers/usb/host/xhci-mvebu.c
+++ b/drivers/usb/host/xhci-mvebu.c
@@ -15,7 +15,7 @@
 
 #include <usb/xhci.h>
 
-struct mvebu_xhci_platdata {
+struct mvebu_xhci_plat {
 	fdt_addr_t hcd_base;
 };
 
@@ -25,7 +25,7 @@
  */
 struct mvebu_xhci {
 	struct xhci_ctrl ctrl;	/* Needs to come first in this struct! */
-	struct usb_platdata usb_plat;
+	struct usb_plat usb_plat;
 	struct xhci_hccr *hcd;
 };
 
@@ -40,7 +40,7 @@
 
 static int xhci_usb_probe(struct udevice *dev)
 {
-	struct mvebu_xhci_platdata *plat = dev_get_plat(dev);
+	struct mvebu_xhci_plat *plat = dev_get_plat(dev);
 	struct mvebu_xhci *ctx = dev_get_priv(dev);
 	struct xhci_hcor *hcor;
 	int len, ret;
@@ -67,7 +67,7 @@
 
 static int xhci_usb_of_to_plat(struct udevice *dev)
 {
-	struct mvebu_xhci_platdata *plat = dev_get_plat(dev);
+	struct mvebu_xhci_plat *plat = dev_get_plat(dev);
 
 	/*
 	 * Get the base address for XHCI controller from the device node
@@ -96,7 +96,7 @@
 	.probe = xhci_usb_probe,
 	.remove = xhci_deregister,
 	.ops	= &xhci_usb_ops,
-	.plat_auto	= sizeof(struct mvebu_xhci_platdata),
+	.plat_auto	= sizeof(struct mvebu_xhci_plat),
 	.priv_auto	= sizeof(struct mvebu_xhci),
 	.flags	= DM_FLAG_ALLOC_PRIV_DMA,
 };
diff --git a/drivers/usb/host/xhci-pci.c b/drivers/usb/host/xhci-pci.c
index 96d1de6..2b445f2 100644
--- a/drivers/usb/host/xhci-pci.c
+++ b/drivers/usb/host/xhci-pci.c
@@ -59,7 +59,7 @@
 	.remove = xhci_deregister,
 	.of_match = xhci_pci_ids,
 	.ops	= &xhci_usb_ops,
-	.plat_auto	= sizeof(struct usb_platdata),
+	.plat_auto	= sizeof(struct usb_plat),
 	.priv_auto	= sizeof(struct xhci_ctrl),
 	.flags	= DM_FLAG_ALLOC_PRIV_DMA,
 };
diff --git a/drivers/usb/host/xhci-rcar.c b/drivers/usb/host/xhci-rcar.c
index dc941a2..5fc7afb 100644
--- a/drivers/usb/host/xhci-rcar.c
+++ b/drivers/usb/host/xhci-rcar.c
@@ -29,7 +29,7 @@
 #define RCAR_USB3_DL_CTRL_FW_SUCCESS	BIT(4)
 #define RCAR_USB3_DL_CTRL_FW_SET_DATA0	BIT(8)
 
-struct rcar_xhci_platdata {
+struct rcar_xhci_plat {
 	fdt_addr_t	hcd_base;
 	struct clk	clk;
 };
@@ -40,7 +40,7 @@
  */
 struct rcar_xhci {
 	struct xhci_ctrl ctrl;	/* Needs to come first in this struct! */
-	struct usb_platdata usb_plat;
+	struct usb_plat usb_plat;
 	struct xhci_hccr *hcd;
 };
 
@@ -76,7 +76,7 @@
 
 static int xhci_rcar_probe(struct udevice *dev)
 {
-	struct rcar_xhci_platdata *plat = dev_get_plat(dev);
+	struct rcar_xhci_plat *plat = dev_get_plat(dev);
 	struct rcar_xhci *ctx = dev_get_priv(dev);
 	struct xhci_hcor *hcor;
 	int len, ret;
@@ -122,7 +122,7 @@
 static int xhci_rcar_deregister(struct udevice *dev)
 {
 	int ret;
-	struct rcar_xhci_platdata *plat = dev_get_plat(dev);
+	struct rcar_xhci_plat *plat = dev_get_plat(dev);
 
 	ret = xhci_deregister(dev);
 
@@ -134,7 +134,7 @@
 
 static int xhci_rcar_of_to_plat(struct udevice *dev)
 {
-	struct rcar_xhci_platdata *plat = dev_get_plat(dev);
+	struct rcar_xhci_plat *plat = dev_get_plat(dev);
 
 	plat->hcd_base = dev_read_addr(dev);
 	if (plat->hcd_base == FDT_ADDR_T_NONE) {
@@ -161,7 +161,7 @@
 	.ops		= &xhci_usb_ops,
 	.of_match	= xhci_rcar_ids,
 	.of_to_plat = xhci_rcar_of_to_plat,
-	.plat_auto	= sizeof(struct rcar_xhci_platdata),
+	.plat_auto	= sizeof(struct rcar_xhci_plat),
 	.priv_auto	= sizeof(struct rcar_xhci),
 	.flags		= DM_FLAG_ALLOC_PRIV_DMA,
 };
diff --git a/drivers/usb/musb-new/da8xx.c b/drivers/usb/musb-new/da8xx.c
index c59ca54..f428035 100644
--- a/drivers/usb/musb-new/da8xx.c
+++ b/drivers/usb/musb-new/da8xx.c
@@ -247,7 +247,7 @@
 	.disable	= da8xx_musb_disable,
 };
 
-struct da8xx_musb_platdata {
+struct da8xx_musb_plat {
 	void *base;
 	void *ctrl_mod_base;
 	struct musb_hdrc_platform_data plat;
@@ -258,7 +258,7 @@
 
 static int da8xx_musb_of_to_plat(struct udevice *dev)
 {
-	struct da8xx_musb_platdata *plat = dev_get_plat(dev);
+	struct da8xx_musb_plat *plat = dev_get_plat(dev);
 	const void *fdt = gd->fdt_blob;
 	int node = dev_of_offset(dev);
 
@@ -282,7 +282,7 @@
 static int da8xx_musb_probe(struct udevice *dev)
 {
 	struct musb_host_data *host = dev_get_priv(dev);
-	struct da8xx_musb_platdata *plat = dev_get_plat(dev);
+	struct da8xx_musb_plat *plat = dev_get_plat(dev);
 	struct usb_bus_priv *priv = dev_get_uclass_priv(dev);
 	struct omap_musb_board_data *otg_board_data;
 	int ret;
@@ -348,6 +348,6 @@
 	.probe = da8xx_musb_probe,
 	.remove = da8xx_musb_remove,
 	.ops = &musb_usb_ops,
-	.plat_auto	= sizeof(struct da8xx_musb_platdata),
+	.plat_auto	= sizeof(struct da8xx_musb_plat),
 	.priv_auto	= sizeof(struct musb_host_data),
 };
diff --git a/drivers/usb/musb-new/mt85xx.c b/drivers/usb/musb-new/mt85xx.c
index 4847b2c..730045c 100644
--- a/drivers/usb/musb-new/mt85xx.c
+++ b/drivers/usb/musb-new/mt85xx.c
@@ -414,6 +414,6 @@
 #ifdef CONFIG_USB_MUSB_HOST
 	.ops		= &musb_usb_ops,
 #endif
-	.plat_auto	= sizeof(struct usb_platdata),
+	.plat_auto	= sizeof(struct usb_plat),
 	.priv_auto	= sizeof(struct mtk_musb_glue),
 };
diff --git a/drivers/usb/musb-new/omap2430.c b/drivers/usb/musb-new/omap2430.c
index b9bba22..3fdcaea 100644
--- a/drivers/usb/musb-new/omap2430.c
+++ b/drivers/usb/musb-new/omap2430.c
@@ -141,7 +141,7 @@
 
 #if CONFIG_IS_ENABLED(DM_USB)
 
-struct omap2430_musb_platdata {
+struct omap2430_musb_plat {
 	void *base;
 	void *ctrl_mod_base;
 	struct musb_hdrc_platform_data plat;
@@ -151,7 +151,7 @@
 
 static int omap2430_musb_of_to_plat(struct udevice *dev)
 {
-	struct omap2430_musb_platdata *plat = dev_get_plat(dev);
+	struct omap2430_musb_plat *plat = dev_get_plat(dev);
 	const void *fdt = gd->fdt_blob;
 	int node = dev_of_offset(dev);
 
@@ -218,7 +218,7 @@
 #else
 	struct musb *musbp;
 #endif
-	struct omap2430_musb_platdata *plat = dev_get_plat(dev);
+	struct omap2430_musb_plat *plat = dev_get_plat(dev);
 	struct usb_bus_priv *priv = dev_get_uclass_priv(dev);
 	struct omap_musb_board_data *otg_board_data;
 	int ret = 0;
@@ -275,7 +275,7 @@
 #ifdef CONFIG_USB_MUSB_HOST
 	.ops = &musb_usb_ops,
 #endif
-	.plat_auto	= sizeof(struct omap2430_musb_platdata),
+	.plat_auto	= sizeof(struct omap2430_musb_plat),
 	.priv_auto	= sizeof(struct musb_host_data),
 };
 
diff --git a/drivers/usb/musb-new/pic32.c b/drivers/usb/musb-new/pic32.c
index 7970d16..b833f10 100644
--- a/drivers/usb/musb-new/pic32.c
+++ b/drivers/usb/musb-new/pic32.c
@@ -288,6 +288,6 @@
 #ifdef CONFIG_USB_MUSB_HOST
 	.ops		= &musb_usb_ops,
 #endif
-	.plat_auto	= sizeof(struct usb_platdata),
+	.plat_auto	= sizeof(struct usb_plat),
 	.priv_auto	= sizeof(struct pic32_musb_data),
 };
diff --git a/drivers/usb/musb-new/sunxi.c b/drivers/usb/musb-new/sunxi.c
index 1337e52..fea4105 100644
--- a/drivers/usb/musb-new/sunxi.c
+++ b/drivers/usb/musb-new/sunxi.c
@@ -552,6 +552,6 @@
 #ifdef CONFIG_USB_MUSB_HOST
 	.ops		= &musb_usb_ops,
 #endif
-	.plat_auto	= sizeof(struct usb_platdata),
+	.plat_auto	= sizeof(struct usb_plat),
 	.priv_auto	= sizeof(struct sunxi_glue),
 };
diff --git a/drivers/usb/musb-new/ti-musb.c b/drivers/usb/musb-new/ti-musb.c
index b0ee57a..81b12fa 100644
--- a/drivers/usb/musb-new/ti-musb.c
+++ b/drivers/usb/musb-new/ti-musb.c
@@ -33,7 +33,7 @@
 
 static void ti_musb_set_phy_power(struct udevice *dev, u8 on)
 {
-	struct ti_musb_platdata *plat = dev_get_plat(dev);
+	struct ti_musb_plat *plat = dev_get_plat(dev);
 
 	if (!plat->ctrl_mod_base)
 		return;
@@ -79,7 +79,7 @@
 
 static int ti_musb_of_to_plat(struct udevice *dev)
 {
-	struct ti_musb_platdata *plat = dev_get_plat(dev);
+	struct ti_musb_plat *plat = dev_get_plat(dev);
 	const void *fdt = gd->fdt_blob;
 	int node = dev_of_offset(dev);
 	int phys;
@@ -147,7 +147,7 @@
 static int ti_musb_host_probe(struct udevice *dev)
 {
 	struct musb_host_data *host = dev_get_priv(dev);
-	struct ti_musb_platdata *plat = dev_get_plat(dev);
+	struct ti_musb_plat *plat = dev_get_plat(dev);
 	struct usb_bus_priv *priv = dev_get_uclass_priv(dev);
 	int ret;
 
@@ -178,7 +178,7 @@
 #if CONFIG_IS_ENABLED(OF_CONTROL)
 static int ti_musb_host_of_to_plat(struct udevice *dev)
 {
-	struct ti_musb_platdata *plat = dev_get_plat(dev);
+	struct ti_musb_plat *plat = dev_get_plat(dev);
 	const void *fdt = gd->fdt_blob;
 	int node = dev_of_offset(dev);
 	int ret;
@@ -204,7 +204,7 @@
 	.probe = ti_musb_host_probe,
 	.remove = ti_musb_host_remove,
 	.ops	= &musb_usb_ops,
-	.plat_auto	= sizeof(struct ti_musb_platdata),
+	.plat_auto	= sizeof(struct ti_musb_plat),
 	.priv_auto	= sizeof(struct musb_host_data),
 };
 
@@ -216,7 +216,7 @@
 #if CONFIG_IS_ENABLED(OF_CONTROL)
 static int ti_musb_peripheral_of_to_plat(struct udevice *dev)
 {
-	struct ti_musb_platdata *plat = dev_get_plat(dev);
+	struct ti_musb_plat *plat = dev_get_plat(dev);
 	const void *fdt = gd->fdt_blob;
 	int node = dev_of_offset(dev);
 	int ret;
@@ -244,7 +244,7 @@
 static int ti_musb_peripheral_probe(struct udevice *dev)
 {
 	struct ti_musb_peripheral *priv = dev_get_priv(dev);
-	struct ti_musb_platdata *plat = dev_get_plat(dev);
+	struct ti_musb_plat *plat = dev_get_plat(dev);
 	int ret;
 
 	priv->periph = musb_init_controller(&plat->plat,
@@ -277,7 +277,7 @@
 	.probe = ti_musb_peripheral_probe,
 	.remove = ti_musb_peripheral_remove,
 	.ops	= &musb_usb_ops,
-	.plat_auto	= sizeof(struct ti_musb_platdata),
+	.plat_auto	= sizeof(struct ti_musb_plat),
 	.priv_auto	= sizeof(struct ti_musb_peripheral),
 	.flags = DM_FLAG_PRE_RELOC,
 };
diff --git a/drivers/video/am335x-fb.c b/drivers/video/am335x-fb.c
index e0d5f44..e99a918 100644
--- a/drivers/video/am335x-fb.c
+++ b/drivers/video/am335x-fb.c
@@ -368,7 +368,7 @@
 
 static int am335x_fb_remove(struct udevice *dev)
 {
-	struct video_uc_platdata *uc_plat = dev_get_uclass_plat(dev);
+	struct video_uc_plat *uc_plat = dev_get_uclass_plat(dev);
 
 	uc_plat->base -= 0x20;
 	uc_plat->size += 0x20;
@@ -377,7 +377,7 @@
 
 static int am335x_fb_probe(struct udevice *dev)
 {
-	struct video_uc_platdata *uc_plat = dev_get_uclass_plat(dev);
+	struct video_uc_plat *uc_plat = dev_get_uclass_plat(dev);
 	struct video_priv *uc_priv = dev_get_uclass_priv(dev);
 	struct am335x_fb_priv *priv = dev_get_priv(dev);
 	struct am335x_lcdhw *regs = priv->regs;
@@ -592,7 +592,7 @@
 
 static int am335x_fb_bind(struct udevice *dev)
 {
-	struct video_uc_platdata *uc_plat = dev_get_uclass_plat(dev);
+	struct video_uc_plat *uc_plat = dev_get_uclass_plat(dev);
 
 	uc_plat->size = ((LCD_MAX_WIDTH * LCD_MAX_HEIGHT *
 			  (1 << LCD_MAX_LOG2_BPP)) >> 3) + 0x20;
diff --git a/drivers/video/atmel_hlcdfb.c b/drivers/video/atmel_hlcdfb.c
index 2d0d0d4..0485ae2 100644
--- a/drivers/video/atmel_hlcdfb.c
+++ b/drivers/video/atmel_hlcdfb.c
@@ -293,7 +293,7 @@
 
 static void atmel_hlcdc_init(struct udevice *dev)
 {
-	struct video_uc_platdata *uc_plat = dev_get_uclass_plat(dev);
+	struct video_uc_plat *uc_plat = dev_get_uclass_plat(dev);
 	struct atmel_hlcdc_priv *priv = dev_get_priv(dev);
 	struct atmel_hlcd_regs *regs = priv->regs;
 	struct display_timing *timing = &priv->timing;
@@ -539,7 +539,7 @@
 
 static int atmel_hlcdc_bind(struct udevice *dev)
 {
-	struct video_uc_platdata *uc_plat = dev_get_uclass_plat(dev);
+	struct video_uc_plat *uc_plat = dev_get_uclass_plat(dev);
 
 	uc_plat->size = LCD_MAX_WIDTH * LCD_MAX_HEIGHT *
 				(1 << LCD_MAX_LOG2_BPP) / 8;
diff --git a/drivers/video/atmel_lcdfb.c b/drivers/video/atmel_lcdfb.c
index f836a9a..f87c022 100644
--- a/drivers/video/atmel_lcdfb.c
+++ b/drivers/video/atmel_lcdfb.c
@@ -245,7 +245,7 @@
 #ifdef CONFIG_DM_VIDEO
 static int atmel_fb_lcd_probe(struct udevice *dev)
 {
-	struct video_uc_platdata *uc_plat = dev_get_uclass_plat(dev);
+	struct video_uc_plat *uc_plat = dev_get_uclass_plat(dev);
 	struct video_priv *uc_priv = dev_get_uclass_priv(dev);
 	struct atmel_fb_priv *priv = dev_get_priv(dev);
 	struct display_timing *timing = &priv->timing;
@@ -269,7 +269,7 @@
 
 static int atmel_fb_of_to_plat(struct udevice *dev)
 {
-	struct atmel_lcd_platdata *plat = dev_get_plat(dev);
+	struct atmel_lcd_plat *plat = dev_get_plat(dev);
 	struct atmel_fb_priv *priv = dev_get_priv(dev);
 	struct display_timing *timing = &priv->timing;
 	const void *blob = gd->fdt_blob;
@@ -285,7 +285,7 @@
 
 static int atmel_fb_lcd_bind(struct udevice *dev)
 {
-	struct video_uc_platdata *uc_plat = dev_get_uclass_plat(dev);
+	struct video_uc_plat *uc_plat = dev_get_uclass_plat(dev);
 
 	uc_plat->size = LCD_MAX_WIDTH * LCD_MAX_HEIGHT *
 			(1 << VIDEO_BPP16) / 8;
@@ -306,7 +306,7 @@
 	.bind	= atmel_fb_lcd_bind,
 	.of_to_plat	= atmel_fb_of_to_plat,
 	.probe	= atmel_fb_lcd_probe,
-	.plat_auto	= sizeof(struct atmel_lcd_platdata),
+	.plat_auto	= sizeof(struct atmel_lcd_plat),
 	.priv_auto	= sizeof(struct atmel_fb_priv),
 };
 #endif
diff --git a/drivers/video/bcm2835.c b/drivers/video/bcm2835.c
index 95662f1..9326999 100644
--- a/drivers/video/bcm2835.c
+++ b/drivers/video/bcm2835.c
@@ -13,7 +13,7 @@
 
 static int bcm2835_video_probe(struct udevice *dev)
 {
-	struct video_uc_platdata *plat = dev_get_uclass_plat(dev);
+	struct video_uc_plat *plat = dev_get_uclass_plat(dev);
 	struct video_priv *uc_priv = dev_get_uclass_priv(dev);
 	int ret;
 	int w, h, pitch;
diff --git a/drivers/video/broadwell_igd.c b/drivers/video/broadwell_igd.c
index 8e5c6cf..cba105c 100644
--- a/drivers/video/broadwell_igd.c
+++ b/drivers/video/broadwell_igd.c
@@ -661,7 +661,7 @@
 
 static int broadwell_igd_probe(struct udevice *dev)
 {
-	struct video_uc_platdata *plat = dev_get_uclass_plat(dev);
+	struct video_uc_plat *plat = dev_get_uclass_plat(dev);
 	struct video_priv *uc_priv = dev_get_uclass_priv(dev);
 	bool is_broadwell;
 	ulong fbbase;
@@ -756,7 +756,7 @@
 
 static int broadwell_igd_bind(struct udevice *dev)
 {
-	struct video_uc_platdata *uc_plat = dev_get_uclass_plat(dev);
+	struct video_uc_plat *uc_plat = dev_get_uclass_plat(dev);
 
 	/* Set the maximum supported resolution */
 	uc_plat->size = 2560 * 1600 * 4;
diff --git a/drivers/video/coreboot.c b/drivers/video/coreboot.c
index 043cc62..0a5fb08 100644
--- a/drivers/video/coreboot.c
+++ b/drivers/video/coreboot.c
@@ -38,7 +38,7 @@
 
 static int coreboot_video_probe(struct udevice *dev)
 {
-	struct video_uc_platdata *plat = dev_get_uclass_plat(dev);
+	struct video_uc_plat *plat = dev_get_uclass_plat(dev);
 	struct video_priv *uc_priv = dev_get_uclass_priv(dev);
 	struct cb_framebuffer *fb = lib_sysinfo.framebuffer;
 	struct vesa_mode_info *vesa = &mode_info.vesa;
diff --git a/drivers/video/efi.c b/drivers/video/efi.c
index ceb6f85..c248bd35 100644
--- a/drivers/video/efi.c
+++ b/drivers/video/efi.c
@@ -110,7 +110,7 @@
 
 static int efi_video_probe(struct udevice *dev)
 {
-	struct video_uc_platdata *plat = dev_get_uclass_plat(dev);
+	struct video_uc_plat *plat = dev_get_uclass_plat(dev);
 	struct video_priv *uc_priv = dev_get_uclass_priv(dev);
 	struct vesa_mode_info *vesa = &mode_info.vesa;
 	int ret;
diff --git a/drivers/video/exynos/exynos_fb.c b/drivers/video/exynos/exynos_fb.c
index cd7767f..7b4459c 100644
--- a/drivers/video/exynos/exynos_fb.c
+++ b/drivers/video/exynos/exynos_fb.c
@@ -377,7 +377,7 @@
 void exynos_fimd_lcd_init(struct udevice *dev)
 {
 	struct exynos_fb_priv *priv = dev_get_priv(dev);
-	struct video_uc_platdata *plat = dev_get_uclass_plat(dev);
+	struct video_uc_plat *plat = dev_get_uclass_plat(dev);
 	struct exynos_fb *reg = priv->reg;
 	unsigned int cfg = 0, rgb_mode;
 	unsigned int offset;
@@ -692,7 +692,7 @@
 
 static int exynos_fb_bind(struct udevice *dev)
 {
-	struct video_uc_platdata *plat = dev_get_uclass_plat(dev);
+	struct video_uc_plat *plat = dev_get_uclass_plat(dev);
 
 	/* This is the maximum panel size we expect to see */
 	plat->size = 1920 * 1080 * 2;
diff --git a/drivers/video/fsl_dcu_fb.c b/drivers/video/fsl_dcu_fb.c
index 9224347..4ea0f12 100644
--- a/drivers/video/fsl_dcu_fb.c
+++ b/drivers/video/fsl_dcu_fb.c
@@ -484,7 +484,7 @@
 
 static int fsl_dcu_video_probe(struct udevice *dev)
 {
-	struct video_uc_platdata *plat = dev_get_uclass_plat(dev);
+	struct video_uc_plat *plat = dev_get_uclass_plat(dev);
 	struct video_priv *uc_priv = dev_get_uclass_priv(dev);
 	struct fb_info fbinfo = { 0 };
 	unsigned int win_x;
@@ -516,7 +516,7 @@
 
 static int fsl_dcu_video_bind(struct udevice *dev)
 {
-	struct video_uc_platdata *plat = dev_get_uclass_plat(dev);
+	struct video_uc_plat *plat = dev_get_uclass_plat(dev);
 	unsigned int win_x;
 	unsigned int win_y;
 	unsigned int depth = 0, freq = 0;
diff --git a/drivers/video/imx/mxc_ipuv3_fb.c b/drivers/video/imx/mxc_ipuv3_fb.c
index 0bbd974..6cdbbaf 100644
--- a/drivers/video/imx/mxc_ipuv3_fb.c
+++ b/drivers/video/imx/mxc_ipuv3_fb.c
@@ -383,7 +383,7 @@
 static int mxcfb_map_video_memory(struct fb_info *fbi)
 {
 	struct mxcfb_info *mxc_fbi = (struct mxcfb_info *)fbi->par;
-	struct video_uc_platdata *plat = dev_get_uclass_plat(mxc_fbi->udev);
+	struct video_uc_plat *plat = dev_get_uclass_plat(mxc_fbi->udev);
 
 	if (fbi->fix.smem_len < fbi->var.yres_virtual * fbi->fix.line_length) {
 		fbi->fix.smem_len = fbi->var.yres_virtual *
@@ -586,7 +586,7 @@
 
 static int ipuv3_video_probe(struct udevice *dev)
 {
-	struct video_uc_platdata *plat = dev_get_uclass_plat(dev);
+	struct video_uc_plat *plat = dev_get_uclass_plat(dev);
 	struct video_priv *uc_priv = dev_get_uclass_priv(dev);
 #if defined(CONFIG_DISPLAY)
 	struct udevice *disp_dev;
@@ -647,7 +647,7 @@
 
 static int ipuv3_video_bind(struct udevice *dev)
 {
-	struct video_uc_platdata *plat = dev_get_uclass_plat(dev);
+	struct video_uc_plat *plat = dev_get_uclass_plat(dev);
 
 	plat->size = LCD_MAX_WIDTH * LCD_MAX_HEIGHT *
 		     (1 << VIDEO_BPP32) / 8;
diff --git a/drivers/video/ivybridge_igd.c b/drivers/video/ivybridge_igd.c
index 9f10689..e7db0cb 100644
--- a/drivers/video/ivybridge_igd.c
+++ b/drivers/video/ivybridge_igd.c
@@ -753,7 +753,7 @@
 
 static int bd82x6x_video_probe(struct udevice *dev)
 {
-	struct video_uc_platdata *plat = dev_get_uclass_plat(dev);
+	struct video_uc_plat *plat = dev_get_uclass_plat(dev);
 	ulong fbbase;
 	void *gtt_bar;
 	int ret, rev;
@@ -781,7 +781,7 @@
 
 static int bd82x6x_video_bind(struct udevice *dev)
 {
-	struct video_uc_platdata *uc_plat = dev_get_uclass_plat(dev);
+	struct video_uc_plat *uc_plat = dev_get_uclass_plat(dev);
 
 	/* Set the maximum supported resolution */
 	uc_plat->size = 2560 * 1600 * 4;
diff --git a/drivers/video/mali_dp.c b/drivers/video/mali_dp.c
index 6c73bd2..dc4f542 100644
--- a/drivers/video/mali_dp.c
+++ b/drivers/video/mali_dp.c
@@ -260,7 +260,7 @@
 static int malidp_probe(struct udevice *dev)
 {
 	struct video_priv *uc_priv = dev_get_uclass_priv(dev);
-	struct video_uc_platdata *uc_plat = dev_get_uclass_plat(dev);
+	struct video_uc_plat *uc_plat = dev_get_uclass_plat(dev);
 	ofnode framebuffer = ofnode_find_subnode(dev_ofnode(dev), "framebuffer");
 	struct malidp_priv *priv = dev_get_priv(dev);
 	struct display_timing timings;
@@ -382,7 +382,7 @@
 
 static int malidp_bind(struct udevice *dev)
 {
-	struct video_uc_platdata *uc_plat = dev_get_uclass_plat(dev);
+	struct video_uc_plat *uc_plat = dev_get_uclass_plat(dev);
 
 	/* choose max possible size: 2K x 2K, XRGB888 framebuffer */
 	uc_plat->size = 4 * 2048 * 2048;
diff --git a/drivers/video/meson/meson_plane.c b/drivers/video/meson/meson_plane.c
index 313c013..e3f784e 100644
--- a/drivers/video/meson/meson_plane.c
+++ b/drivers/video/meson/meson_plane.c
@@ -100,7 +100,7 @@
 
 void meson_vpu_setup_plane(struct udevice *dev, bool is_interlaced)
 {
-	struct video_uc_platdata *uc_plat = dev_get_uclass_plat(dev);
+	struct video_uc_plat *uc_plat = dev_get_uclass_plat(dev);
 	struct video_priv *uc_priv = dev_get_uclass_priv(dev);
 	struct meson_vpu_priv *priv = dev_get_priv(dev);
 	u32 osd1_ctrl_stat;
diff --git a/drivers/video/meson/meson_vpu.c b/drivers/video/meson/meson_vpu.c
index b5614fa..ca6933a 100644
--- a/drivers/video/meson/meson_vpu.c
+++ b/drivers/video/meson/meson_vpu.c
@@ -43,7 +43,7 @@
 
 static int meson_vpu_setup_mode(struct udevice *dev, struct udevice *disp)
 {
-	struct video_uc_platdata *uc_plat = dev_get_uclass_plat(dev);
+	struct video_uc_plat *uc_plat = dev_get_uclass_plat(dev);
 	struct video_priv *uc_priv = dev_get_uclass_priv(dev);
 	struct display_timing timing;
 	bool is_cvbs = false;
@@ -138,7 +138,7 @@
 
 static int meson_vpu_bind(struct udevice *dev)
 {
-	struct video_uc_platdata *plat = dev_get_uclass_plat(dev);
+	struct video_uc_plat *plat = dev_get_uclass_plat(dev);
 
 	plat->size = VPU_MAX_WIDTH * VPU_MAX_HEIGHT *
 		(1 << VPU_MAX_LOG2_BPP) / 8;
diff --git a/drivers/video/mvebu_lcd.c b/drivers/video/mvebu_lcd.c
index bc789ec..d3d07e5 100644
--- a/drivers/video/mvebu_lcd.c
+++ b/drivers/video/mvebu_lcd.c
@@ -526,7 +526,7 @@
 
 static int mvebu_video_probe(struct udevice *dev)
 {
-	struct video_uc_platdata *plat = dev_get_uclass_plat(dev);
+	struct video_uc_plat *plat = dev_get_uclass_plat(dev);
 	struct video_priv *uc_priv = dev_get_uclass_priv(dev);
 	struct mvebu_video_priv *priv = dev_get_priv(dev);
 	struct mvebu_lcd_info lcd_info;
@@ -575,7 +575,7 @@
 
 static int mvebu_video_bind(struct udevice *dev)
 {
-	struct video_uc_platdata *plat = dev_get_uclass_plat(dev);
+	struct video_uc_plat *plat = dev_get_uclass_plat(dev);
 
 	plat->size = LCD_MAX_WIDTH * LCD_MAX_HEIGHT *
 		(1 << LCD_MAX_LOG2_BPP) / 8;
diff --git a/drivers/video/mxsfb.c b/drivers/video/mxsfb.c
index 5b770a7..b43732a 100644
--- a/drivers/video/mxsfb.c
+++ b/drivers/video/mxsfb.c
@@ -356,7 +356,7 @@
 
 static int mxs_video_probe(struct udevice *dev)
 {
-	struct video_uc_platdata *plat = dev_get_uclass_plat(dev);
+	struct video_uc_plat *plat = dev_get_uclass_plat(dev);
 	struct video_priv *uc_priv = dev_get_uclass_priv(dev);
 
 	struct display_timing timings;
@@ -409,7 +409,7 @@
 
 static int mxs_video_bind(struct udevice *dev)
 {
-	struct video_uc_platdata *plat = dev_get_uclass_plat(dev);
+	struct video_uc_plat *plat = dev_get_uclass_plat(dev);
 	struct display_timing timings;
 	u32 bpp = 0;
 	u32 bytes_pp = 0;
@@ -443,7 +443,7 @@
 
 static int mxs_video_remove(struct udevice *dev)
 {
-	struct video_uc_platdata *plat = dev_get_uclass_plat(dev);
+	struct video_uc_plat *plat = dev_get_uclass_plat(dev);
 
 	mxs_remove_common(plat->base);
 
diff --git a/drivers/video/nexell_display.c b/drivers/video/nexell_display.c
index da11e9d..00e2c36 100644
--- a/drivers/video/nexell_display.c
+++ b/drivers/video/nexell_display.c
@@ -174,7 +174,7 @@
 
 static void nx_display_parse_dp_planes(ofnode node,
 				       struct nx_display_dev *dp,
-				       struct video_uc_platdata *plat)
+				       struct video_uc_plat *plat)
 {
 	const char *name;
 	ofnode subnode;
@@ -332,7 +332,7 @@
 
 static int nx_display_parse_dt(struct udevice *dev,
 			       struct nx_display_dev *dp,
-			       struct video_uc_platdata *plat)
+			       struct video_uc_plat *plat)
 {
 	const char *name, *dtype;
 	int ret = 0;
@@ -391,7 +391,7 @@
 	struct nx_display_dev *dp;
 	int i, ret;
 	int node = 0;
-	struct video_uc_platdata *plat = NULL;
+	struct video_uc_plat *plat = NULL;
 
 	struct udevice *dev;
 
@@ -534,9 +534,9 @@
 
 static int nx_display_probe(struct udevice *dev)
 {
-	struct video_uc_platdata *uc_plat = dev_get_uclass_plat(dev);
+	struct video_uc_plat *uc_plat = dev_get_uclass_plat(dev);
 	struct video_priv *uc_priv = dev_get_uclass_priv(dev);
-	struct nx_display_platdata *plat = dev_get_plat(dev);
+	struct nx_display_plat *plat = dev_get_plat(dev);
 	static GraphicDevice *graphic_device;
 	char addr[64];
 
@@ -546,7 +546,7 @@
 		return -EINVAL;
 
 	if (!uc_plat) {
-		debug("%s(): video_uc_platdata *plat == NULL --> return -EINVAL\n",
+		debug("%s(): video_uc_plat *plat == NULL --> return -EINVAL\n",
 		      __func__);
 		return -EINVAL;
 	}
@@ -558,7 +558,7 @@
 	}
 
 	if (!plat) {
-		debug("%s(): nx_display_platdata *plat == NULL --> return -EINVAL\n",
+		debug("%s(): nx_display_plat *plat == NULL --> return -EINVAL\n",
 		      __func__);
 		return -EINVAL;
 	}
@@ -619,7 +619,7 @@
 
 static int nx_display_bind(struct udevice *dev)
 {
-	struct video_uc_platdata *plat = dev_get_uclass_plat(dev);
+	struct video_uc_plat *plat = dev_get_uclass_plat(dev);
 
 	debug("%s()\n", __func__);
 
@@ -643,7 +643,7 @@
 	.name = "nexell-display",
 	.id = UCLASS_VIDEO,
 	.of_match = nx_display_ids,
-	.plat_auto	= sizeof(struct nx_display_platdata),
+	.plat_auto	= sizeof(struct nx_display_plat),
 	.bind = nx_display_bind,
 	.probe = nx_display_probe,
 	.priv_auto	= sizeof(struct nx_display_dev),
diff --git a/drivers/video/rockchip/rk_vop.c b/drivers/video/rockchip/rk_vop.c
index c20d158..fcb393b 100644
--- a/drivers/video/rockchip/rk_vop.c
+++ b/drivers/video/rockchip/rk_vop.c
@@ -364,7 +364,7 @@
 
 int rk_vop_probe(struct udevice *dev)
 {
-	struct video_uc_platdata *plat = dev_get_uclass_plat(dev);
+	struct video_uc_plat *plat = dev_get_uclass_plat(dev);
 	struct rk_vop_priv *priv = dev_get_priv(dev);
 	int ret = 0;
 	ofnode port, node;
@@ -406,7 +406,7 @@
 
 int rk_vop_bind(struct udevice *dev)
 {
-	struct video_uc_platdata *plat = dev_get_uclass_plat(dev);
+	struct video_uc_plat *plat = dev_get_uclass_plat(dev);
 
 	plat->size = 4 * (CONFIG_VIDEO_ROCKCHIP_MAX_XRES *
 			  CONFIG_VIDEO_ROCKCHIP_MAX_YRES);
diff --git a/drivers/video/sandbox_sdl.c b/drivers/video/sandbox_sdl.c
index 3e231e8..12edf9c 100644
--- a/drivers/video/sandbox_sdl.c
+++ b/drivers/video/sandbox_sdl.c
@@ -23,7 +23,7 @@
 
 static int sandbox_sdl_probe(struct udevice *dev)
 {
-	struct video_uc_platdata *uc_plat = dev_get_uclass_plat(dev);
+	struct video_uc_plat *uc_plat = dev_get_uclass_plat(dev);
 	struct sandbox_sdl_plat *plat = dev_get_plat(dev);
 	struct video_priv *uc_priv = dev_get_uclass_priv(dev);
 	struct sandbox_state *state = state_get_current();
@@ -49,7 +49,7 @@
 
 static int sandbox_sdl_bind(struct udevice *dev)
 {
-	struct video_uc_platdata *uc_plat = dev_get_uclass_plat(dev);
+	struct video_uc_plat *uc_plat = dev_get_uclass_plat(dev);
 	struct sandbox_sdl_plat *plat = dev_get_plat(dev);
 	int ret = 0;
 
diff --git a/drivers/video/simplefb.c b/drivers/video/simplefb.c
index 7f94018..b5fb6f6 100644
--- a/drivers/video/simplefb.c
+++ b/drivers/video/simplefb.c
@@ -12,7 +12,7 @@
 
 static int simple_video_probe(struct udevice *dev)
 {
-	struct video_uc_platdata *plat = dev_get_uclass_plat(dev);
+	struct video_uc_plat *plat = dev_get_uclass_plat(dev);
 	struct video_priv *uc_priv = dev_get_uclass_priv(dev);
 	const void *blob = gd->fdt_blob;
 	const int node = dev_of_offset(dev);
diff --git a/drivers/video/stm32/stm32_ltdc.c b/drivers/video/stm32/stm32_ltdc.c
index ff28bdb..dc10b8c 100644
--- a/drivers/video/stm32/stm32_ltdc.c
+++ b/drivers/video/stm32/stm32_ltdc.c
@@ -329,7 +329,7 @@
 
 static int stm32_ltdc_probe(struct udevice *dev)
 {
-	struct video_uc_platdata *uc_plat = dev_get_uclass_plat(dev);
+	struct video_uc_plat *uc_plat = dev_get_uclass_plat(dev);
 	struct video_priv *uc_priv = dev_get_uclass_priv(dev);
 	struct stm32_ltdc_priv *priv = dev_get_priv(dev);
 	struct udevice *bridge = NULL;
@@ -452,7 +452,7 @@
 
 static int stm32_ltdc_bind(struct udevice *dev)
 {
-	struct video_uc_platdata *uc_plat = dev_get_uclass_plat(dev);
+	struct video_uc_plat *uc_plat = dev_get_uclass_plat(dev);
 
 	uc_plat->size = CONFIG_VIDEO_STM32_MAX_XRES *
 			CONFIG_VIDEO_STM32_MAX_YRES *
diff --git a/drivers/video/sunxi/sunxi_de2.c b/drivers/video/sunxi/sunxi_de2.c
index 5540e70..50657a7 100644
--- a/drivers/video/sunxi/sunxi_de2.c
+++ b/drivers/video/sunxi/sunxi_de2.c
@@ -237,7 +237,7 @@
 
 static int sunxi_de2_probe(struct udevice *dev)
 {
-	struct video_uc_platdata *plat = dev_get_uclass_plat(dev);
+	struct video_uc_plat *plat = dev_get_uclass_plat(dev);
 	struct udevice *disp;
 	int ret;
 
@@ -299,7 +299,7 @@
 
 static int sunxi_de2_bind(struct udevice *dev)
 {
-	struct video_uc_platdata *plat = dev_get_uclass_plat(dev);
+	struct video_uc_plat *plat = dev_get_uclass_plat(dev);
 
 	plat->size = LCD_MAX_WIDTH * LCD_MAX_HEIGHT *
 		(1 << LCD_MAX_LOG2_BPP) / 8;
@@ -331,7 +331,7 @@
 {
 	struct udevice *de2, *hdmi, *lcd;
 	struct video_priv *de2_priv;
-	struct video_uc_platdata *de2_plat;
+	struct video_uc_plat *de2_plat;
 	int mux;
 	int offset, ret;
 	u64 start, size;
diff --git a/drivers/video/tegra.c b/drivers/video/tegra.c
index d185096..08b006b 100644
--- a/drivers/video/tegra.c
+++ b/drivers/video/tegra.c
@@ -299,7 +299,7 @@
 
 static int tegra_lcd_probe(struct udevice *dev)
 {
-	struct video_uc_platdata *plat = dev_get_uclass_plat(dev);
+	struct video_uc_plat *plat = dev_get_uclass_plat(dev);
 	struct video_priv *uc_priv = dev_get_uclass_priv(dev);
 	struct tegra_lcd_priv *priv = dev_get_priv(dev);
 	const void *blob = gd->fdt_blob;
@@ -393,7 +393,7 @@
 
 static int tegra_lcd_bind(struct udevice *dev)
 {
-	struct video_uc_platdata *plat = dev_get_uclass_plat(dev);
+	struct video_uc_plat *plat = dev_get_uclass_plat(dev);
 	const void *blob = gd->fdt_blob;
 	int node = dev_of_offset(dev);
 	int rgb;
diff --git a/drivers/video/tegra124/display.c b/drivers/video/tegra124/display.c
index f834bd9..f642b3b 100644
--- a/drivers/video/tegra124/display.c
+++ b/drivers/video/tegra124/display.c
@@ -465,7 +465,7 @@
 
 static int tegra124_lcd_probe(struct udevice *dev)
 {
-	struct video_uc_platdata *plat = dev_get_uclass_plat(dev);
+	struct video_uc_plat *plat = dev_get_uclass_plat(dev);
 	ulong start;
 	int ret;
 
@@ -482,7 +482,7 @@
 
 static int tegra124_lcd_bind(struct udevice *dev)
 {
-	struct video_uc_platdata *uc_plat = dev_get_uclass_plat(dev);
+	struct video_uc_plat *uc_plat = dev_get_uclass_plat(dev);
 
 	uc_plat->size = LCD_MAX_WIDTH * LCD_MAX_HEIGHT *
 			(1 << VIDEO_BPP16) / 8;
diff --git a/drivers/video/vesa.c b/drivers/video/vesa.c
index e370cdd..869e546 100644
--- a/drivers/video/vesa.c
+++ b/drivers/video/vesa.c
@@ -13,7 +13,7 @@
 
 static int vesa_video_probe(struct udevice *dev)
 {
-	struct video_uc_platdata *plat = dev_get_uclass_plat(dev);
+	struct video_uc_plat *plat = dev_get_uclass_plat(dev);
 	ulong fbbase;
 	int ret;
 
@@ -31,7 +31,7 @@
 
 static int vesa_video_bind(struct udevice *dev)
 {
-	struct video_uc_platdata *uc_plat = dev_get_uclass_plat(dev);
+	struct video_uc_plat *uc_plat = dev_get_uclass_plat(dev);
 
 	/* Set the maximum supported resolution */
 	uc_plat->size = 2560 * 1600 * 4;
diff --git a/drivers/video/video-uclass.c b/drivers/video/video-uclass.c
index 2cd0d94..20f6973 100644
--- a/drivers/video/video-uclass.c
+++ b/drivers/video/video-uclass.c
@@ -25,7 +25,7 @@
  * Theory of operation:
  *
  * Before relocation each device is bound. The driver for each device must
- * set the @align and @size values in struct video_uc_platdata. This
+ * set the @align and @size values in struct video_uc_plat. This
  * information represents the requires size and alignment of the frame buffer
  * for the device. The values can be an over-estimate but cannot be too
  * small. The actual values will be suppled (in the same manner) by the bind()
@@ -68,7 +68,7 @@
 
 static ulong alloc_fb(struct udevice *dev, ulong *addrp)
 {
-	struct video_uc_platdata *plat = dev_get_uclass_plat(dev);
+	struct video_uc_plat *plat = dev_get_uclass_plat(dev);
 	ulong base, align, size;
 
 	if (!plat->size)
@@ -301,7 +301,7 @@
 /* Set up the display ready for use */
 static int video_post_probe(struct udevice *dev)
 {
-	struct video_uc_platdata *plat = dev_get_uclass_plat(dev);
+	struct video_uc_plat *plat = dev_get_uclass_plat(dev);
 	struct video_priv *priv = dev_get_uclass_priv(dev);
 	char name[30], drv[15], *str;
 	const char *drv_name = drv;
@@ -410,5 +410,5 @@
 	.pre_remove	= video_pre_remove,
 	.priv_auto	= sizeof(struct video_uc_priv),
 	.per_device_auto	= sizeof(struct video_priv),
-	.per_device_plat_auto	= sizeof(struct video_uc_platdata),
+	.per_device_plat_auto	= sizeof(struct video_uc_plat),
 };
diff --git a/drivers/virtio/virtio_pci_legacy.c b/drivers/virtio/virtio_pci_legacy.c
index 8aaa449..03fa5cb 100644
--- a/drivers/virtio/virtio_pci_legacy.c
+++ b/drivers/virtio/virtio_pci_legacy.c
@@ -292,7 +292,7 @@
 
 static int virtio_pci_probe(struct udevice *udev)
 {
-	struct pci_child_platdata *pplat = dev_get_parent_plat(udev);
+	struct pci_child_plat *pplat = dev_get_parent_plat(udev);
 	struct virtio_dev_priv *uc_priv = dev_get_uclass_priv(udev);
 	struct virtio_pci_priv *priv = dev_get_priv(udev);
 	u16 subvendor, subdevice;
diff --git a/drivers/virtio/virtio_pci_modern.c b/drivers/virtio/virtio_pci_modern.c
index 620d094..dfbbf8a 100644
--- a/drivers/virtio/virtio_pci_modern.c
+++ b/drivers/virtio/virtio_pci_modern.c
@@ -456,7 +456,7 @@
 
 static int virtio_pci_probe(struct udevice *udev)
 {
-	struct pci_child_platdata *pplat = dev_get_parent_plat(udev);
+	struct pci_child_plat *pplat = dev_get_parent_plat(udev);
 	struct virtio_dev_priv *uc_priv = dev_get_uclass_priv(udev);
 	struct virtio_pci_priv *priv = dev_get_priv(udev);
 	u16 subvendor;
diff --git a/drivers/watchdog/xilinx_tb_wdt.c b/drivers/watchdog/xilinx_tb_wdt.c
index 98fdb3f..d71ae6c 100644
--- a/drivers/watchdog/xilinx_tb_wdt.c
+++ b/drivers/watchdog/xilinx_tb_wdt.c
@@ -26,7 +26,7 @@
 	u32 tbr; /* 0x8 */
 };
 
-struct xlnx_wdt_platdata {
+struct xlnx_wdt_plat {
 	bool enable_once;
 	struct watchdog_regs *regs;
 };
@@ -34,7 +34,7 @@
 static int xlnx_wdt_reset(struct udevice *dev)
 {
 	u32 reg;
-	struct xlnx_wdt_platdata *plat = dev_get_plat(dev);
+	struct xlnx_wdt_plat *plat = dev_get_plat(dev);
 
 	debug("%s ", __func__);
 
@@ -51,7 +51,7 @@
 static int xlnx_wdt_stop(struct udevice *dev)
 {
 	u32 reg;
-	struct xlnx_wdt_platdata *plat = dev_get_plat(dev);
+	struct xlnx_wdt_plat *plat = dev_get_plat(dev);
 
 	if (plat->enable_once) {
 		debug("Can't stop Xilinx watchdog.\n");
@@ -71,7 +71,7 @@
 
 static int xlnx_wdt_start(struct udevice *dev, u64 timeout, ulong flags)
 {
-	struct xlnx_wdt_platdata *plat = dev_get_plat(dev);
+	struct xlnx_wdt_plat *plat = dev_get_plat(dev);
 
 	debug("%s:\n", __func__);
 
@@ -92,7 +92,7 @@
 
 static int xlnx_wdt_of_to_plat(struct udevice *dev)
 {
-	struct xlnx_wdt_platdata *plat = dev_get_plat(dev);
+	struct xlnx_wdt_plat *plat = dev_get_plat(dev);
 
 	plat->regs = (struct watchdog_regs *)dev_read_addr(dev);
 	if (IS_ERR(plat->regs))
@@ -123,7 +123,7 @@
 	.id = UCLASS_WDT,
 	.of_match = xlnx_wdt_ids,
 	.probe = xlnx_wdt_probe,
-	.plat_auto	= sizeof(struct xlnx_wdt_platdata),
+	.plat_auto	= sizeof(struct xlnx_wdt_plat),
 	.of_to_plat = xlnx_wdt_of_to_plat,
 	.ops = &xlnx_wdt_ops,
 };
diff --git a/drivers/watchdog/xilinx_wwdt.c b/drivers/watchdog/xilinx_wwdt.c
index 3e5063c..49f2043 100644
--- a/drivers/watchdog/xilinx_wwdt.c
+++ b/drivers/watchdog/xilinx_wwdt.c
@@ -36,7 +36,7 @@
 	struct clk clk;
 };
 
-struct xlnx_wwdt_platdata {
+struct xlnx_wwdt_plat {
 	bool enable_once;
 };
 
@@ -125,7 +125,7 @@
 static int xlnx_wwdt_probe(struct udevice *dev)
 {
 	int ret;
-	struct xlnx_wwdt_platdata *plat = dev_get_plat(dev);
+	struct xlnx_wwdt_plat *plat = dev_get_plat(dev);
 	struct xlnx_wwdt_priv *wdt = dev_get_priv(dev);
 
 	dev_dbg(dev, "%s: Probing wdt%u\n", __func__, dev->seq);
@@ -147,7 +147,7 @@
 
 static int xlnx_wwdt_of_to_plat(struct udevice *dev)
 {
-	struct xlnx_wwdt_platdata *plat = dev_get_plat(dev);
+	struct xlnx_wwdt_plat *plat = dev_get_plat(dev);
 
 	plat->enable_once = dev_read_u32_default(dev, "xlnx,wdt-enable-once",
 						 0);
@@ -173,7 +173,7 @@
 	.of_match = xlnx_wwdt_ids,
 	.probe = xlnx_wwdt_probe,
 	.priv_auto	= sizeof(struct xlnx_wwdt_priv),
-	.plat_auto	= sizeof(struct xlnx_wwdt_platdata),
+	.plat_auto	= sizeof(struct xlnx_wwdt_plat),
 	.of_to_plat = xlnx_wwdt_of_to_plat,
 	.ops = &xlnx_wwdt_ops,
 };
diff --git a/drivers/xen/pvblock.c b/drivers/xen/pvblock.c
index 0f72241..6455dfd 100644
--- a/drivers/xen/pvblock.c
+++ b/drivers/xen/pvblock.c
@@ -70,7 +70,7 @@
 	u8 *bounce_buffer;
 };
 
-struct blkfront_platdata {
+struct blkfront_plat {
 	unsigned int devid;
 };
 
@@ -685,7 +685,7 @@
 static int pvblock_blk_probe(struct udevice *udev)
 {
 	struct blkfront_dev *blk_dev = dev_get_priv(udev);
-	struct blkfront_platdata *plat = dev_get_plat(udev);
+	struct blkfront_plat *plat = dev_get_plat(udev);
 	struct blk_desc *desc = dev_get_uclass_plat(udev);
 	int ret, devid;
 
@@ -737,12 +737,12 @@
 {
 	struct driver_info info;
 	struct udevice *udev;
-	struct blkfront_platdata *plat;
+	struct blkfront_plat *plat;
 	int ret;
 
 	debug("New " DRV_NAME_BLK ", device ID %d\n", devid);
 
-	plat = malloc(sizeof(struct blkfront_platdata));
+	plat = malloc(sizeof(struct blkfront_plat));
 	if (!plat) {
 		printf("Failed to allocate platform data\n");
 		return -ENOMEM;
